gpt4 book ai didi

python - 如何使用 uvicorn 创建的事件循环?

转载 作者:行者123 更新时间:2023-12-05 02:44:45 26 4
gpt4 key购买 nike

我正在使用 uvicorn,我需要使用现有的事件循环。我正在使用以下命令:

loop = asyncio.get_event_loop()

但是当我使用这一行时,代码卡住了。但是如果我使用 new_event_loop,我会得到以下错误:

RuntimeError: Task <Task pending coro=<open_connection() running at /usr/lib/python3.6/asyncio/streams.py:81> cb=[_release_waiter(<Future pendi...sk._wakeup()]>)() at /usr/lib/python3.6/asyncio/tasks.py:316]> got Future <Future pending> attached to a different loop

请帮助我了解如何使用 uvicorn 创建的现有循环。

最佳答案

你可以阅读这个问题@https://github.com/encode/uvicorn/issues/706

基本上,您必须创建自己的事件循环并将其传递给 uvicorn。

import asyncio
from uvicorn import Config, Server


async def app(scope, receive, send):
await send({
'type': 'http.response.start',
'status': 200,
'headers': [
[b'content-type', b'text/plain'],
]
})
await send({
'type': 'http.response.body',
'body': b'Hello, world!',
})


loop = asyncio.new_event_loop()

config = Config(app=app, loop=loop)
server = Server(config)
loop.run_until_complete(server.serve())

关于python - 如何使用 uvicorn 创建的事件循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66275747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com