iho*_*yam 32 python asynchronous python-asyncio
我想知道是否有一种方法可以直接从 python REPL调用async函数?await
因此以以下代码为例:
import aiohttp
import asyncio
async def somefunc():
async with aiohttp.ClientSession() as session:
host_url = 'https://somehost'
async with session.get(host_url) as resp:
response = await resp.json()
return response
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是一种调试类似功能的简单方法,基本上我想
>>> result = await somefunc()
Run Code Online (Sandbox Code Playgroud)
我知道这可以通过
import asyncio
loop = asyncio.get_event_loop()
loop.run_until_complete(somefunc())
Run Code Online (Sandbox Code Playgroud)
但是使用这种方法,我需要更改 somefunc 的主体来记录响应的结果,或者使用额外的异步函数(如下所示)来打印结果
async def result_print():
result = await somefunc()
print(result)
loop = asyncio.get_event_loop()
loop.run_until_complete(result_print())
Run Code Online (Sandbox Code Playgroud)
总结以上内容,我正在寻找一种更方便的方法来在 python REPL 中等待异步函数,也许是一个自定义 REPL 实现,允许
>>> result = await somefunc()
Run Code Online (Sandbox Code Playgroud)
或者可能有一种方法可以在我不知道的 python 默认 repl 中做到这一点?
dir*_*irn 64
如果您使用以下命令启动 REPL,则可以实现您想要的行为
python -m asyncio
Run Code Online (Sandbox Code Playgroud)