use*_*738 5 django asgi django-4.0 django-4.1
我已经部署了一个 django 应用程序(使用 uvicorn 在 ASGI 上)并获得了很多 OperationalError FATAL: sorry, too many clients already
这似乎是 django 4.x 和 ASGI 的一个已知问题 #33497,但到目前为止我找不到任何内容(除了承认它)
有没有办法解决这个问题,或者我应该切换到 WSGI(或降级到 3.2)?
在我看来,这对于使用 ASGI 来说是一个阻碍问题。难道不应该更好地记录下来吗?(除非我错过了)
我遇到了这个问题,并通过CONN_MAX_AGE = 0在 Django settings.py 中设置(这也是默认设置)解决了它:
DATABASES = {
"default": {
"CONN_MAX_AGE": 0, # Use 0 to close database connections at the end of each request
"ENGINE": "django.db.backends.postgresql",
"HOST": os.environ.get("POSTGRES_HOST", "db"),
"NAME": os.environ.get("POSTGRES_DB"),
"PASSWORD": os.environ.get("POSTGRES_PASSWORD"),
"PORT": os.environ.get("POSTGRES_PORT", "5432"),
"USER": os.environ.get("POSTGRES_USER"),
}
}
Run Code Online (Sandbox Code Playgroud)
它有一些缺点,CONN_MAX_AGE = 0因为它本质上会关闭持久连接。可能有更好的解决方案,例如连接池或调整工作进程的数量,以更有效地使用连接。
| 归档时间: |
|
| 查看次数: |
718 次 |
| 最近记录: |