Gunicorn Worker 超时时间戳太大,无法转换为 C _PyTime_t
Gunicorn Worker timeout timestamp too large to convert to C _PyTime_t
我正在尝试使用 gunicorn 和一名工人一起启动我的烧瓶应用程序,但是 returns 这个错误
OverflowError: timestamp too large to convert to C _PyTime_t
这是我用来发射 gunicorn 的命令
gunicorn app:app -b 0.0.0.0:7004 \
--name $APP_NAME \
--workers 1\
--timeout 9999999 \
这是堆栈跟踪,
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
worker.init_process()
File "/usr/lib/python3.6/site-packages/gunicorn/workers/base.py", line 134, in init_process
self.run()
File "/usr/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 124, in run
self.run_for_one(timeout)
File "/usr/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 83, in run_for_one
self.wait(timeout)
File "/usr/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 35, in wait
ret = select.select(self.wait_fds, [], [], timeout)
OverflowError: timestamp too large to convert to C _PyTime_t
我读了几个问题,但都说要减少我已经减少的超时。我不明白为什么它不起作用。
谢谢!
该值对于基础 C 数据类型来说太大 (INT
)。 gunicorn --timeout
标志接受以秒为单位的值,一般来说,如果你必须让一个工人活那么久(~116 天),你可能做错了什么。工作人员应在合理的时间后暂停连接以释放资源。如果您有一些计算量大的端点需要一段时间,您仍然应该很好地估计该端点通常需要多长时间,并相应地调整您的 gunicorn --timeout
参数。比标准 HTTP request/response 周期花费更长的时间的事情应该移动到任务队列,例如 Redis 或 RabbitMQ。您没有提供太多关于您的 Flask 应用程序究竟在做什么的信息,所以我说的是非常笼统的术语。话虽这么说,您可以省略 --timeout
标志。我认为同步工作者的默认值是 30 秒,这对于典型的网络应用程序来说是非常合理的
我正在尝试使用 gunicorn 和一名工人一起启动我的烧瓶应用程序,但是 returns 这个错误
OverflowError: timestamp too large to convert to C _PyTime_t
这是我用来发射 gunicorn 的命令
gunicorn app:app -b 0.0.0.0:7004 \
--name $APP_NAME \
--workers 1\
--timeout 9999999 \
这是堆栈跟踪,
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
worker.init_process()
File "/usr/lib/python3.6/site-packages/gunicorn/workers/base.py", line 134, in init_process
self.run()
File "/usr/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 124, in run
self.run_for_one(timeout)
File "/usr/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 83, in run_for_one
self.wait(timeout)
File "/usr/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 35, in wait
ret = select.select(self.wait_fds, [], [], timeout)
OverflowError: timestamp too large to convert to C _PyTime_t
我读了几个问题,但都说要减少我已经减少的超时。我不明白为什么它不起作用。
谢谢!
该值对于基础 C 数据类型来说太大 (INT
)。 gunicorn --timeout
标志接受以秒为单位的值,一般来说,如果你必须让一个工人活那么久(~116 天),你可能做错了什么。工作人员应在合理的时间后暂停连接以释放资源。如果您有一些计算量大的端点需要一段时间,您仍然应该很好地估计该端点通常需要多长时间,并相应地调整您的 gunicorn --timeout
参数。比标准 HTTP request/response 周期花费更长的时间的事情应该移动到任务队列,例如 Redis 或 RabbitMQ。您没有提供太多关于您的 Flask 应用程序究竟在做什么的信息,所以我说的是非常笼统的术语。话虽这么说,您可以省略 --timeout
标志。我认为同步工作者的默认值是 30 秒,这对于典型的网络应用程序来说是非常合理的