首页 > 解决方案 > Uvicorn 自动关闭

问题描述

尝试在共享主机服务器(Linux Debian)上启动 uvicorn:

uvicorn etebase_server.asgi:application --port 8000 --host 0.0.0.0 --lifespan on

uvicorn 启动,可以处理几个 HTTP GET,但在 30 秒左右后关闭。这是错误消息:

INFO: Started server process [125907]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO: Shutting down
INFO: Waiting for application shutdown.
ERROR: Exception in 'lifespan' protocol
Traceback (most recent call last):
File "/XXX/etebase/.venv/lib/python3.7/site-packages/uvicorn/lifespan/on.py", line 55, in main
await app(scope, self.receive, self.send)
File "/XXX/etebase/.venv/lib/python3.7/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in call
return await self.app(scope, receive, send)
File "/XXX/etebase/.venv/lib/python3.7/site-packages/fastapi/applications.py", line 199, in call
await super().call(scope, receive, send)
File "/XXX/etebase/.venv/lib/python3.7/site-packages/starlette/applications.py", line 111, in call
await self.middleware_stack(scope, receive, send)
File "/XXX/etebase/.venv/lib/python3.7/site-packages/starlette/middleware/errors.py", line 146, in call
await self.app(scope, receive, send)
File "/XXX/etebase/.venv/lib/python3.7/site-packages/starlette/middleware/trustedhost.py", line 34, in call
await self.app(scope, receive, send)
File "/XXX/etebase/.venv/lib/python3.7/site-packages/starlette/middleware/cors.py", line 70, in call
await self.app(scope, receive, send)
File "/XXX/etebase/.venv/lib/python3.7/site-packages/starlette/exceptions.py", line 58, in call
await self.app(scope, receive, send)
File "/XXX/etebase/.venv/lib/python3.7/site-packages/starlette/routing.py", line 555, in call
await self.lifespan(scope, receive, send)
File "/XXX/etebase/.venv/lib/python3.7/site-packages/starlette/routing.py", line 526, in lifespan
async for item in self.lifespan_context(app):
File "/XXX/etebase/.venv/lib/python3.7/site-packages/starlette/routing.py", line 469, in default_lifespan
await self.shutdown()
File "/XXX/etebase/.venv/lib/python3.7/site-packages/starlette/routing.py", line 512, in shutdown
await handler()
File "./etebase_fastapi/main.py", line 71, in on_shutdown
await redisw.close()
File "./etebase_fastapi/redis.py", line 18, in close
if self.redis is not None:
AttributeError: 'RedisWrapper' object has no attribute 'redis'
INFO: Application shutdown complete.
INFO: Finished server process [125907]

有什么想法AttributeError: 'RedisWrapper' object has no attribute 'redis'吗???

标签: djangolinuxhostingshareduvicorn

解决方案


推荐阅读