如何永远运行异步函数(Python)

Tea*_*rzz 1 python asynchronous python-3.x python-asyncio

如何使用 asyncio 并永远运行该函数。我知道有run_until_complete(function_name),但是我该如何使用run_forever如何调用异步函数?

async def someFunction():
    async with something as some_variable:
        # do something
Run Code Online (Sandbox Code Playgroud)

我不知道如何启动该功能。

use*_*342 6

run_forever并不意味着异步函数会神奇地永远运行,它意味着循环永远运行,或者至少直到有人调用loop.stop(). 要真正永远运行异步函数,您需要创建一个执行此操作的异步函数。例如:

async def some_function():
    async with something as some_variable:
        # do something

async def forever():
    while True:
        await some_function()

loop = asyncio.get_event_loop()
loop.run_until_complete(forever())
Run Code Online (Sandbox Code Playgroud)

这就是为什么run_forever()不接受参数,它不关心任何特定的协程。loop.create_task典型的模式是在调用之前添加一些使用或等效的协程run_forever()。但即使是不运行任何任务并且闲置的事件循环也可能很有用,因为另一个线程可以调用asyncio.run_coroutine_threadsafe它并为其提供工作。