Merge pull request #69 from michael-mri/master
avoid polling when waiting to send ping.
This commit is contained in:
commit
cbcdcc86b4
@ -901,12 +901,8 @@ class WebSocketApp(object):
|
|||||||
self.keep_running = False
|
self.keep_running = False
|
||||||
self.sock.close()
|
self.sock.close()
|
||||||
|
|
||||||
def _send_ping(self, interval):
|
def _send_ping(self, interval, event):
|
||||||
while True:
|
while not event.wait(interval):
|
||||||
for i in range(interval):
|
|
||||||
time.sleep(1)
|
|
||||||
if not self.keep_running:
|
|
||||||
return
|
|
||||||
self.sock.ping()
|
self.sock.ping()
|
||||||
|
|
||||||
def run_forever(self, sockopt=None, sslopt=None, ping_interval=0):
|
def run_forever(self, sockopt=None, sslopt=None, ping_interval=0):
|
||||||
@ -935,7 +931,8 @@ class WebSocketApp(object):
|
|||||||
self._callback(self.on_open)
|
self._callback(self.on_open)
|
||||||
|
|
||||||
if ping_interval:
|
if ping_interval:
|
||||||
thread = threading.Thread(target=self._send_ping, args=(ping_interval,))
|
event = threading.Event()
|
||||||
|
thread = threading.Thread(target=self._send_ping, args=(ping_interval, event))
|
||||||
thread.setDaemon(True)
|
thread.setDaemon(True)
|
||||||
thread.start()
|
thread.start()
|
||||||
|
|
||||||
@ -958,6 +955,8 @@ class WebSocketApp(object):
|
|||||||
self._callback(self.on_error, e)
|
self._callback(self.on_error, e)
|
||||||
finally:
|
finally:
|
||||||
if thread:
|
if thread:
|
||||||
|
event.set()
|
||||||
|
thread.join()
|
||||||
self.keep_running = False
|
self.keep_running = False
|
||||||
self.sock.close()
|
self.sock.close()
|
||||||
self._callback(self.on_close)
|
self._callback(self.on_close)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user