Python 多个类之间的异步
我对asyncio还相当陌生,我不确定我要实现的目标的最佳方法是什么 我有几个类,其中一个将实例化其他类的实例。它还将运行一个侦听消息的循环,并在收到某些消息时调用其他类的方法 问题是这些类还需要运行循环。目前,我的主类中有这个,作为Python 多个类之间的异步,python,python-asyncio,Python,Python Asyncio,我对asyncio还相当陌生,我不确定我要实现的目标的最佳方法是什么 我有几个类,其中一个将实例化其他类的实例。它还将运行一个侦听消息的循环,并在收到某些消息时调用其他类的方法 问题是这些类还需要运行循环。目前,我的主类中有这个,作为\uuuu init\uuudef中的最后一件事: ... self.loop = asyncio.new_event_loop() asyncio.set_event_loop(self.loop) self.loop.run_un
\uuuu init\uuu
def中的最后一件事:
...
self.loop = asyncio.new_event_loop()
asyncio.set_event_loop(self.loop)
self.loop.run_until_complete(self.start_services())
loop = asyncio.get_event_loop()
loop.run_until_complete(self.retrieve_real_time_data())
self.start\u 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'])
现在问题来了。作为独立测试,这些类将像这样启动它们的异步函数(这将在\uuu init\uu
def的末尾:
...
self.loop = asyncio.new_event_loop()
asyncio.set_event_loop(self.loop)
self.loop.run_until_complete(self.start_services())
loop = asyncio.get_event_loop()
loop.run_until_complete(self.retrieve_real_time_data())
这不起作用,我看过一些文章,但找不到解决方案,尽管我现在知道这就像在作业调度器中启动作业调度器
我尝试过等待,调用一个非异步函数,然后等待self.retrieve\u real\u time\u data()
,但到目前为止没有任何效果
我该怎么做才能轻松地将异步方法添加到正在运行的循环中,在循环运行时从循环内部添加,以及从
\uuuuu init\uuuuuu
添加?我认为这是您正在寻找的正确答案。谢谢您,这似乎奏效了。我认为这是您正在寻找的正确答案。谢谢