我有一个在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服务器运行时,它运行得很好!
问题-为什么我的请求从未得到处理?我该如何解决?
答案 0 :(得分:0)
您应该检查gunicorn worker的配置,它必须大于1才能运行一个会自我调用的线程。
例如:(2n + 1作为处理器数量)
gunicorn app.wsgi:application --workers=4 --bind 0.0.0.0:8000