python - gunicorn 服务器在调用自身时挂起
问题描述
我有一个在 gunicorn 服务器上运行的 Django REST Framework 服务。这是配置的样子:
exec gunicorn \
--pid /web/gunicorn.pid \
--workers 4 \
--threads 8 \
--worker-class gthread \
--name my-api \
--chdir /src/api \
--bind unix:/web/.sock \
--timeout 300 \
--limit-request-line 8190 \
wsgi:application
我有两种看法:
def view1(request):
# Call DB etc.
def view2(request):
my_api_python_client.call_view1(request) # Hangs!
这会导致请求无限期挂起。我知道从另一个视图调用一个视图听起来违反直觉,但必须这样做才能利用缓存、异步调用等。
奇怪的是,当我将它作为 Pycharm 服务器运行时,它运行得非常好!
问题 - 为什么我的请求从未得到处理?我如何解决它?
解决方案
你应该检查你的 gunicorn worker 的配置,它必须大于 1 才能运行一个会调用自己的线程。
例如:(2n+1 作为处理器数量)
gunicorn app.wsgi:application --workers=4 --bind 0.0.0.0:8000
推荐阅读
- node.js - 在本地 Windows nodeJS 安装中运行“ng new”会给出 npm 错误
- postgresql - 在 Slick 中添加评论
- php - Laravel 5.7 外键约束格式不正确
- python - 如何在 yattag 中添加提取的 html?
- ios - 使用 Codable (Swift) 从 Json 文件中解析 UIColor
- mysql - 如何将列中多次出现的“同名”显示为行中的单个名称
- node.js - 时刻时区和 DST
- mongodb - Mongo DB 跳过和限制
- arrays - 循环结构数组并输出特定的结构值?
- python - 文本文件帮助(Python 3)