首页 > 解决方案 > uWSGI worker 1 小时后无响应或执行停止

问题描述

我正在为 python 微服务使用NGINX、uWSGI烧瓶。此 api 从 DB 中读取,进行一些计算并将传递的参数写入 DB。对于一个参数(我传递给这个 api),由于数据量很大,大约需要 20 分钟才能完成执行。同样,我必须为 9 个不同的参数运行这个 api。一个接一个地完成需要3个多小时。所以我把这个api实现为python线程(使数据库和相关代码同步)。当前使用连接池进行数据库连接。然后,如果我并行发送相同 api 的请求 9 次(传递 9 个不同的参数),则执行工作正常,直到 1 小时。然后 uWSGI worker 自动停止执行而没有任何错误(甚至没有 SIGKILL)。这是我的 uWSGI 配置。

[uwsgi]
module = main
callable = app

uid = nginx
gid = nginx

socket = /tmp/uwsgi.sock
chmod-socket = 666

cheaper = 2
processes = %(%k * 3)
workers = 10
cheaper-step = 1

enable-threads = true
buffer-size=32768

有什么建议可能是什么问题?

仅供参考:由于我将其作为线程运行,因此我在启动线程后发送响应。所以响应不需要时间。发送响应后,此特定任务读取、计算和写入 DB 部分正在后台运行。

标签: pythonmultithreadingnginxflaskuwsgi

解决方案


推荐阅读