Как заблокировать вызов asyncio.Task - PullRequest
0 голосов
/ 07 апреля 2019

Я работаю с Anki Cozmo SDK, который требует использования асинхронных функций для выполнения вызовов API. Попытка согласовать два из них, что иногда требует дополнительного вызова «move» перед другой асинхронной задачей.

Проще говоря, мне нужно две асинхронные задачи для запуска в одном цикле, но не запускать вторую, пока не завершится первая.

loop = asyncio.get_event_loop()
async_tasks = []
async_tasks.append(asyncio.ensure_future(bot1.draw_line(), loop=loop))
async_tasks.append(asyncio.ensure_future(bot2.draw_line(), loop=loop))

if draw_util.point_conflicts(selected_plans, bot.position, CDIST):
    safe_position = draw_util.find_safe_point_2_robots(selected_plans, bot.position, CDIST + 1)
    task = asyncio.ensure_future(bot.move_to(safe_position), loop=loop)
    await task

await asyncio.gather(*async_tasks)

Мне нужен какой-то способ дождаться завершения задачи move_to, прежде чем продолжить выполнение async_tasks. Как это можно сделать?

Я пытался использовать loop.run_until_complete() для того же эффекта.

...