Метод ожидает завершения asyncio перед переходом к следующей строке - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь использовать asyncio в своем коде. Это работает, но проблема в том, что Я хочу, чтобы мой код продолжал выполнять , вместо этого он продолжал ждать, пока код asyncio завершит выполнение.

В текущем сценарии мой код продолжает ждать код asyncio result = asyncio.run(run()) должен быть завершен перед переходом к следующей строке кода.

Я думаю, что мой код asyncio должен быть выполнен в новом потоке. Но как заставить его работать?

Я использую Django.

def Dashboard(requests):
    result = asyncio.run(run())
    all_Farm = MyCollection.objects.all().filter(userid=requests.user.id)

    return render(requests, 'Dashboard.html',
                  {'all_farm': all_Farm})


async def run():

    drone = System()
    await drone.connect(system_address="udp://:14540")

    print("Waiting for drone to connect...")
    async for state in drone.core.connection_state():
        if state.is_connected:
            print(f"Drone discovered with UUID: {state.uuid}")
            break

    print("Waiting for drone to have a global position estimate...")
    async for health in drone.telemetry.health():
        if health.is_global_position_ok:
            print("Global position estimate ok")
            break

    print("-- Arming")
    await drone.action.arm()

    print("-- Taking off")
    await drone.action.takeoff()

    await asyncio.sleep(5)

    print("-- Landing")
    await drone.action.land()

1 Ответ

0 голосов
/ 24 июля 2020

Проведя еще несколько исследований по этому c запуску асинхронных c методов в Django, я нашел решение, которое действительно работало в моем случае.

Решение, которое я нашел СЕЛЬДЕРЕЙ . Я нашел это из здесь . Сельдерей отлично работает вместе с Django.

...