我正在使用Gunicorn来服务Django应用程序,它工作正常,直到我将其超时从30秒更改为900000s,我必须这样做,因为我有一个用例,需要上传和处理一个巨大的文件(在某些情况下,过程占用超过30米)但是在这个改变之后,几个小时后Gunicorn没有反应,我想问题是所有工人(30岁)将在这段时间后忙于处理一些请求,奇怪的是它甚至发生了如果我根本没有运行那么长的请求,它会在django admin中正常探索。我想知道是否有办法监控gunicorn上的请求,并且看到工作人员忙于处理什么请求,我想知道让他们忙碌的请求。我试过了--log-file=- --log-level=debug
,但它没有告诉任何关于请求的内容,我需要更详细的日志。
答案 0 :(得分:4)
从最新的Gunicorn文档中,您可以使用cmd行/脚本:
--log-file - ("-" means log to stderr)
--log-level debug
或在配置文件中,您可以使用:
errorlog = '-'
accesslog = '-'
loglevel = 'debug'
但没有提及您在问题中指定的参数格式:
--log-file=-
--log-level=debug
访问的默认日志记录是'无' (ref),所以在黑暗中拍摄,但这可以解释为什么没有收到详细的日志信息。这是来自Gunicorn来源的sample config file和最新的Gunicorn config docs。
此外,您可能希望在Django中查看changing your logging configuration。
答案 1 :(得分:-1)
虽然我也在寻找一个如何看待有多少工人忙碌的好答案,但你正在以错误的方式解决这个问题。对于需要很长时间的任务,您需要一个工作人员(如Celery / RabbitMQ)异步执行繁重的工作,同时您的请求/响应周期仍然很快。
我的网站上有一个脚本可能需要5分钟才能完成,这是我使用的好模式:
对于我的网站,我们希望更新超过10分钟的数据。我传递Accept-Datetime标头以指示可接受的数据量。如果我们的本地缓存副本早于此,我们就会产生任务循环。