From d2e7570acb6038c85790645fdd70e837fb516a79 Mon Sep 17 00:00:00 2001 From: Oleg Broytman Date: Sun, 9 Mar 2025 02:56:46 +0300 Subject: [PATCH] Feat(bkmk_rtwisted): Use `threading.Event` for synchronization and timeouts --- Robots/bkmk_rtwisted.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Robots/bkmk_rtwisted.py b/Robots/bkmk_rtwisted.py index 0a4616f..67a95e0 100644 --- a/Robots/bkmk_rtwisted.py +++ b/Robots/bkmk_rtwisted.py @@ -12,7 +12,6 @@ __all__ = ['robot_twisted'] from urllib.parse import urlsplit import threading -import time from twisted.internet import reactor, _sslverify from twisted.internet.endpoints import TCP4ClientEndpoint @@ -32,6 +31,10 @@ reactor_thread.start() class robot_twisted(robot_base): + def __init__(self, *args, **kw): + robot_base.__init__(self, *args, **kw) + self.event = threading.Event() + def version_str(self): return 'twisted/%s' % twisted.version @@ -58,10 +61,8 @@ class robot_twisted(robot_base): Headers(_headers), None) d.addCallbacks(self.cbResponse, self.cbError) - for i in range(self.timeout*10): - if self.error is None \ - and self.body is None: - time.sleep(0.1) + self.event.clear() + self.event.wait(self.timeout) if self.error is None: if self.body is None: @@ -93,9 +94,11 @@ class robot_twisted(robot_base): def cbError(self, error): self.error = error + self.event.set() def cbBody(self, body): self.body = body + self.event.set() def decode_header(header): -- 2.39.5