【问题标题】:Long Pause After Asyncio Context ManagerAsyncio 上下文管理器后长时间暂停
【发布时间】:2021-05-04 11:03:20
【问题描述】:

只是想通过一些简单的例子来了解asyncio

import asyncio
from binance import AsyncClient, BinanceSocketManager

async def main():

    # initialise the client
    client = await AsyncClient.create()
    bsm = BinanceSocketManager(client)

    # create listener using async with
    # this will exit and close the connection after 5 messages
    async with bsm.trade_socket('BTCUSDT') as ts:
        for _ in range(5):
            res = await ts.recv()
            print(f'{_} recv {res}')

    print('Hello')

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

输出:

0 recv {'e': 'trade', 'E': 1620125896291, 's': 'BTCUSDT', 't': 807604863, 'p': '56336.87000000', 'q': '0.00044900', 'b': 5772457377, 'a': 5772457449, 'T': 1620125896291, 'm': True, 'M': True}
1 recv {'e': 'trade', 'E': 1620125896345, 's': 'BTCUSDT', 't': 807604864, 'p': '56336.88000000', 'q': '0.00099900', 'b': 5772457451, 'a': 5772457310, 'T': 1620125896345, 'm': False, 'M': True}
2 recv {'e': 'trade', 'E': 1620125896556, 's': 'BTCUSDT', 't': 807604865, 'p': '56336.87000000', 'q': '0.01220300', 'b': 5772457377, 'a': 5772457460, 'T': 1620125896555, 'm': True, 'M': True}
3 recv {'e': 'trade', 'E': 1620125896579, 's': 'BTCUSDT', 't': 807604866, 'p': '56336.88000000', 'q': '0.01037100', 'b': 5772457461, 'a': 5772457310, 'T': 1620125896579, 'm': False, 'M': True}
4 recv {'e': 'trade', 'E': 1620125896583, 's': 'BTCUSDT', 't': 807604867, 'p': '56336.88000000', 'q': '0.00091100', 'b': 5772457462, 'a': 5772457310, 'T': 1620125896583, 'm': False, 'M': True}
Hello

每当收到交易事件时,以 0、1、2、3 和 4 开头的行几乎立即出现。但是,在打印Hello 之前会有相当长的停顿(大约 1-5 秒,每次运行都会有所不同)。暂停的原因是什么?

【问题讨论】:

  • 上下文管理器在移动到 with 块之外之前进行清理,也许是 bsm.trade_socket 占用了时间 - 特别是如果网络涉及 asyncio。不直接相关,但您可能想在this 上阅读更多信息。

标签: python python-asyncio binance


【解决方案1】:

这将在 5 条消息后退出并关闭连接

对于范围内的_(5):

将 5 更改为 > 数字。

如果我的理解对你的问题是正确的。

【讨论】:

  • 我认为它试图关闭连接,这就是它暂停的原因。
猜你喜欢
  • 2019-09-28
  • 2012-10-31
  • 2022-06-30
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
  • 2021-05-18
  • 2018-02-05
  • 2016-03-03
相关资源
最近更新 更多