我使用python和websocket从kucoin的api收集滴答数据。端点标识代码: all,所以它的意思是,我接收所有符号的所有滴答。
async def websocketConnect():
async def event(msg):
print(time.time())
print(msg["data"]["time"])
# Subscribe to ALL tickers
topic = "/market/ticker:all"
publicClient = WsToken(url="https://api.kucoin.com")
wsClientTick = await KucoinWsClient.create(None, publicClient, event, private=False)
await wsClientTick.subscribe(topic)
while True:
await asyncio.sleep(1)
if __name__ == "__main__":
loop = asyncio.new_event_loop()
loop.run_until_complete(websocketConnect())当我比较当前的时间戳和滴答时间时,我可以从100毫秒到30秒之间的波动很大。
我能做些什么让它更稳定吗?是因为我收到了大量的数据吗?
编辑:
因此,我根据异步文档添加了一个“任务”,分别计算来自套接字的每个消息。现在,当前毫秒和滴答时间之间的增量是上下移动的,但不会从100毫秒增加到30毫秒,这更好,但我想让它更稳定。
async def compute(msg):
print(int(time.time() * 1000) - int(msg["data"]["time"]), flush=True)
async def websocketConnect():
async def event(msg):
task = asyncio.create_task(compute(msg))
await task
# Subscribe to ALL tickers
topic = "/market/ticker:all"
publicClient = WsToken(url="https://api.kucoin.com")
wsClientTick = await KucoinWsClient.create(None, publicClient,
event, private=False)
await wsClientTick.subscribe(topic)
while True:
await asyncio.sleep(1)
if __name__ == "__main__":
loop = asyncio.new_event_loop()
loop.run_until_complete(websocketConnect())编辑2 :
所以事实上,我可以延迟100 is以下的大部分时间,但是当我开始对熊猫做一些操作的时候--例如,我处理进来的蜱类的延迟会逐渐增加。
有人能帮忙吗?
发布于 2022-11-11 16:30:18
您使用的是异步,所以所有东西仍然运行在同一个线程上。尝试线程或多处理模块来创建和更新主代码可以读取的文件。
https://stackoverflow.com/questions/70792399
复制相似问题