Как предшествовать выполнению задачи в цикле событий - PullRequest
0 голосов
/ 27 марта 2019

У меня есть набор сопрограмм, которые агрегируют информацию по аргументам полезной нагрузки, но у меня возникла проблема, потому что другая сопрограмма зависит от выходных данных для агрегации. Как я могу указать, что одна сопрограмма должна запускаться после завершения других?

async def connect(self, args):
    pipe_items = asyncio.gather(
        asyncio.ensure_future(agreggation_item1.call(args)),
        asyncio.ensure_future(agreggation_item2.call(args)),
        asyncio.ensure_future(routing_item1.call(args)),
        asyncio.ensure_future(routing_item2.call(args))
            )
    return asyncio.gather(pipe_items)

def run(self, data_in):
    loop = asyncio.get_event_loop()
    try:
        loop.run_until_complete(self.connect(data_in))
    finally:
        loop.close()

Проблема заключается в том, что routing_item1 и routing_item2 нуждаются в данных args, которые агрегируются, когда агрегация_item1 и aggregation_item2 завершены. Поэтому мне нужно запустить задачу маршрутизации после завершения задачи агрегации, как я могу сделать это в моем контексте, используя asyncio?

...