多个类之间的异步

时间:2019-08-28 23:02:05

标签: python python-asyncio

我对asyncio还是很陌生,我不确定什么是实现我想要达到的最佳方法。

我有几个类,其中一个将实例化其他实例。当它接收到某些消息时,还将运行一个循环来监听消息,并调用其他类的方法。

问题是这些类也需要运行循环。目前,我在主班里有这个,作为__init__ def中的最后一件事:

    ...
    self.loop = asyncio.new_event_loop()
    asyncio.set_event_loop(self.loop)
    self.loop.run_until_complete(self.start_services())

self.start_services()然后继续做一些事情,等待发送一条消息以启动服务(一切正常),然后尝试实例化其他类:

    # load TPE services
    self.logger.log(f'Loading services for TPEs: {trading_pair_exchanges}...')
    for tpe in trading_pair_exchanges:
        TradingPairExchangeDataService.TradingPairExchangeDataService(tpe, ['EMA26'])

    # load realtime service
    self.logger.log('Loading RealtimeService...')
    RealTimeDataService.RealTimeDataService(trading_pair_exchanges, ['EMA26'])

现在是问题所在。作为独立测试,这些类将像这样启动其异步功能(这将在__init__ def的末尾:

    loop = asyncio.get_event_loop()
    loop.run_until_complete(self.retrieve_real_time_data())

这不起作用,尽管看了几篇文章,但找不到解决方案,尽管我现在知道这就像在作业调度程序中启动作业调度程序一样。

我尝试等待,调用了一个非异步函数,该函数随后将等待self.retrieve_real_time_data(),但是到目前为止没有任何效果。

如何轻松地在运行循环中从运行时的循环内部以及从__init__到运行循环中添加异步方法?

0 个答案:

没有答案