mirror of
https://github.com/aljazceru/bitfinex-api-py.git
synced 2025-12-19 23:04:21 +01:00
generic_websocket: set event_emmiter thread to daemon
This commit is contained in:
committed by
Jacob Plaster
parent
e0d58c5030
commit
5c618e930a
@@ -83,6 +83,10 @@ class CustomLogger(logging.Logger):
|
|||||||
logging.addLevelName(self.TRADE, "TRADE")
|
logging.addLevelName(self.TRADE, "TRADE")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
def set_level(self, level):
|
||||||
|
logging.Logger.setLevel(self, level)
|
||||||
|
|
||||||
|
|
||||||
def trade(self, message, *args, **kws):
|
def trade(self, message, *args, **kws):
|
||||||
"""
|
"""
|
||||||
Print a syntax highlighted trade signal
|
Print a syntax highlighted trade signal
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Module used as a interfeace to describe a generick websocket client
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
|
import concurrent.futures
|
||||||
import websockets
|
import websockets
|
||||||
import socket
|
import socket
|
||||||
import json
|
import json
|
||||||
@@ -56,19 +57,14 @@ class Socket():
|
|||||||
await self.ws.send(data)
|
await self.ws.send(data)
|
||||||
|
|
||||||
def _start_event_worker():
|
def _start_event_worker():
|
||||||
async def event_sleep_process():
|
|
||||||
"""
|
|
||||||
sleeping process for event emitter to schedule on
|
|
||||||
"""
|
|
||||||
while True:
|
|
||||||
await asyncio.sleep(0)
|
|
||||||
def start_loop(loop):
|
def start_loop(loop):
|
||||||
asyncio.set_event_loop(loop)
|
asyncio.set_event_loop(loop)
|
||||||
loop.run_until_complete(event_sleep_process())
|
loop.run_forever()
|
||||||
event_loop = asyncio.new_event_loop()
|
event_loop = asyncio.new_event_loop()
|
||||||
|
ee = EventEmitter(scheduler=asyncio.ensure_future)
|
||||||
worker = Thread(target=start_loop, args=(event_loop,))
|
worker = Thread(target=start_loop, args=(event_loop,))
|
||||||
|
worker.daemon = True
|
||||||
worker.start()
|
worker.start()
|
||||||
ee = EventEmitter(scheduler=asyncio.ensure_future, loop=event_loop)
|
|
||||||
return ee
|
return ee
|
||||||
|
|
||||||
class GenericWebsocket:
|
class GenericWebsocket:
|
||||||
@@ -76,10 +72,11 @@ class GenericWebsocket:
|
|||||||
Websocket object used to contain the base functionality of a websocket.
|
Websocket object used to contain the base functionality of a websocket.
|
||||||
Inlcudes an event emitter and a standard websocket client.
|
Inlcudes an event emitter and a standard websocket client.
|
||||||
"""
|
"""
|
||||||
|
logger = CustomLogger('BfxWebsocket', logLevel="DEBUG")
|
||||||
|
|
||||||
def __init__(self, host, logLevel='INFO', max_retries=5, create_event_emitter=None):
|
def __init__(self, host, logLevel='INFO', max_retries=5, create_event_emitter=None):
|
||||||
self.host = host
|
self.host = host
|
||||||
self.logger = CustomLogger('BfxWebsocket', logLevel=logLevel)
|
self.logger.set_level(logLevel)
|
||||||
# overide 'error' event to stop it raising an exception
|
# 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.ws = None
|
||||||
@@ -139,6 +136,7 @@ class GenericWebsocket:
|
|||||||
sId = len(self.sockets)
|
sId = len(self.sockets)
|
||||||
s = Socket(sId)
|
s = Socket(sId)
|
||||||
self.sockets[sId] = s
|
self.sockets[sId] = s
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
while retries < self.max_retries and self.attempt_retry:
|
while retries < self.max_retries and self.attempt_retry:
|
||||||
try:
|
try:
|
||||||
async with websockets.connect(self.host) as websocket:
|
async with websockets.connect(self.host) as websocket:
|
||||||
|
|||||||
Reference in New Issue
Block a user