我需要从异步函数之外的asyncio.create_task(function(((返回一个值。
import asyncio
async def hello():
return("hello")
response = asyncio.get_event_loop().create_task(hello())
print(response)
这就是输出的内容:
<Task pending coro=<hello() running at C:Users\PycharmProjectsPCWebsitefjdfjd.py:3>>
当我想接收:
"Hello"
注意,我不能使用.run((
RuntimeError: asyncio.run() cannot be called from a running event loop
或者在收到错误时运行_until_complete
RuntimeError: This event loop is already running
根据asyncio.create_task文档,函数返回一个Task
对象。
asyncio.create_task(coro,*,name=None(
将协同程序封装到Task中,并安排其执行。回来Task对象。
当结果准备就绪(任务完成(时,您可以使用Task函数通过调用函数task.result()
从任务本身提取结果(以及一些其他信息(。
示例:
import asyncio
async def func1():
return 1233
loop = asyncio.get_event_loop()
task = loop.create_task(func1())
# The following line is needed so the loop will run and complete the task in the first place.
loop.run_until_complete(task)
结果:
>>> task.done()
True
>>> task.result()
1233
如果你在jupyter笔记本上运行这个代码,在一个新的单元格中,你可以简单地执行:
await hello()
由于事件循环已经在运行,您不需要担心获取事件循环。如果你在终端上运行它,你应该这样做:
asyncio.run(hello())