Python 线程和 uWSGI Harakiri

Python 线程和 uWSGI Harakiri

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

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

谢谢!

答案1

这些选项对于弄清楚该功能到底发生了什么非常有用harakiri

harakiri-verbose=true

启用 harakiri 的详细模式

py-tracebacker=/path/to/socket

启用 uWSGI python tracebacker

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

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

harakiri-no-arh=true

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

相关内容