Python 线程和 uWSGI Harakiri

jme*_*etz 5 nginx django threads uwsgi

我有一个使用基于 nginx、uWSGI 和 Django 构建的 API 的 web 应用程序。最近我在一个特定的 API 调用中看到了很多 harakiris,它执行一些快速处理,然后产生一些线程来处理一些长时间运行的函数。然后主线程返回,工作线程将结果存储在缓存中并退出。线程生成后,它们之间没有交互。

我的 uWSGI 设置为 20 秒的 harakiri。这应该是主线程完成并返回的充足时间(平均约为 2-3 秒)。uWSGI 是否有可能是 harakiri-ing 因为我的工作线程需要太长时间才能返回?如果是这样,我可以通过在 python 中使用多处理而不是多线程来解决这个问题吗?

谢谢!

anx*_*anx 0

这些选项将非常方便地了解该harakiri功能到底发生了什么:

harakiri-verbose=true

启用 harakiri 的详细模式

py-tracebacker=/path/to/socket

启用 uWSGI python 跟踪器

从该套接字读取以查看回溯(uWSGI 方便地提供了一个--connect-and-read=/path/to/socket选项)。

您还可以通过设置来调查请求后线程状态和日志诊断uwsgi.after_req_hook = callback。在调用此方法之前,可以显式禁用 harakiri 模式:

harakiri-no-arh=true

在 after-request-hook 期间不要启用 harakiri