diff options
| author | Scott Gasch <[email protected]> | 2022-08-15 09:20:20 -0700 |
|---|---|---|
| committer | Scott Gasch <[email protected]> | 2022-08-15 09:20:20 -0700 |
| commit | 6ca1a7b51513673a7ae10ee38057e83aaee4c409 (patch) | |
| tree | 9ab6147d8e6fb53cb7602fe173c13a75c97f5f05 | |
| parent | 54b5493516c71cd8f5ac65a698c73c2adc629838 (diff) | |
Fix a threading related bug in tplink_utils.
| -rw-r--r-- | decorator_utils.py | 7 | ||||
| -rw-r--r-- | smart_home/tplink_utils.py | 2 |
2 files changed, 8 insertions, 1 deletions
diff --git a/decorator_utils.py b/decorator_utils.py index 438d7f9..4615fec 100644 --- a/decorator_utils.py +++ b/decorator_utils.py @@ -647,6 +647,13 @@ def timeout( main thread). When not using signals, timeout granularity will be rounded to the nearest 0.1s. + Beware that an @timeout on a function inside a module will be + evaluated at module load time and not when the wrapped function is + invoked. This can lead to problems when relying on the automatic + main thread detection code (use_signals=None, the default) since + the import probably happens on the main thread and the invocation + can happen on a different thread (which can't use signals). + Raises an exception when/if the timeout is reached. It is illegal to pass anything other than a function as the first diff --git a/smart_home/tplink_utils.py b/smart_home/tplink_utils.py index abf4970..ea35110 100644 --- a/smart_home/tplink_utils.py +++ b/smart_home/tplink_utils.py @@ -122,7 +122,7 @@ def decrypt(string: bytes) -> str: return result -@timeout(10, error_message="Timed out comunicating with device.") +@timeout(10, use_signals=False, error_message="Timed out comunicating with device.") def communicate_with_device( ip: str, port: int, |
