Gunicorn自动重新启动导致错误

2024-05-16 11:14:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我在nginx反向代理后面以异步模式运行gunicorn。两者都在主机网络中同一个VM上的单独docker容器中,只要我不在一定数量的请求之后配置对自动重新启动工作程序的max_请求,一切都可以正常运行。配置autorestart后,工作进程的重新启动未正确处理,引发错误并导致响应失败。我需要此设置来修复内存泄漏问题,并防止gunicorn和其他应用程序组件崩溃

Gunicorn日志:

2020-08-07 06:55:23 [1438] [INFO] Autorestarting worker after current request.
2020-08-07 06:55:23 [1438] [ERROR] Socket error processing request.
Traceback (most recent call last):
  File "/opt/mapproxy/lib/python3.5/site-packages/gunicorn/workers/base_async.py", line 65, in handle
    util.reraise(*sys.exc_info())
  File "/opt/mapproxy/lib/python3.5/site-packages/gunicorn/util.py", line 625, in reraise
    raise value
  File "/opt/mapproxy/lib/python3.5/site-packages/gunicorn/workers/base_async.py", line 38, in handle
    listener_name = listener.getsockname()
OSError: [Errno 9] Bad file descriptor

Gunicorn正在使用以下配置运行:

bind = '0.0.0.0:8081'
worker_class = 'eventlet' 
workers = 8
timeout = 60
no_sendfile = True
max_requests = 1000
max_requests_jitter = 500

Tags: inpyrequestlibpackageslinesitemax