mirror of
https://github.com/aljazceru/bitfinex-api-py.git
synced 2025-12-20 07:14:20 +01:00
GenericWS: add ability to manually close websocket
This commit is contained in:
@@ -39,9 +39,10 @@ class GenericWebsocket:
|
||||
self.events = EventEmitter(
|
||||
scheduler=asyncio.ensure_future, loop=self.loop)
|
||||
# overide 'error' event to stop it raising an exception
|
||||
self.events.on('error', self.on_error)
|
||||
# self.events.on('error', self.on_error)
|
||||
self.ws = None
|
||||
self.max_retries = max_retries
|
||||
self.attempt_retry = True
|
||||
|
||||
def run(self):
|
||||
"""
|
||||
@@ -69,16 +70,18 @@ class GenericWebsocket:
|
||||
|
||||
async def _main(self, host):
|
||||
retries = 0
|
||||
while retries < self.max_retries:
|
||||
while retries < self.max_retries and self.attempt_retry:
|
||||
try:
|
||||
await self._connect(host)
|
||||
retries = 0
|
||||
except (ConnectionClosed, socket.error) as e:
|
||||
self._emit('disconnected')
|
||||
if (not self.attempt_retry):
|
||||
return
|
||||
self.logger.error(str(e))
|
||||
retries += 1
|
||||
# wait 5 seconds befor retrying
|
||||
self.logger.info("Waiting 5 seconds befor retrying...")
|
||||
self.logger.info("Waiting 5 seconds before retrying...")
|
||||
await asyncio.sleep(5)
|
||||
self.logger.info("Reconnect attempt {}/{}".format(retries, self.max_retries))
|
||||
self.logger.info("Unable to connect to websocket.")
|
||||
@@ -121,6 +124,7 @@ class GenericWebsocket:
|
||||
On websocket close print and fire event. This is used by the data server.
|
||||
"""
|
||||
self.logger.info("Websocket closed.")
|
||||
self.attempt_retry = False
|
||||
await self.ws.close()
|
||||
self._emit('done')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user