Я использую Gunicorn для обслуживания приложения Django, он работал нормально, пока я не изменил свой тайм-аут с 30 до 900000, я должен был сделать это, потому что у меня был usecase, в котором огромный файл, необходимый для загрузки и обрабатывается (в некоторых случаях обрабатывается более 30 м), но после этого изменения Гуникорн не реагирует через несколько часов, я думаю, проблема в том, что все рабочие (будучи 30) будут заняты некоторыми запросами после этого количества времени, это происходит, даже если я не запускаю этот длинный запрос вообще, и это происходит с обычным исследованием в admin django. Я хочу знать, есть ли способ отслеживать запросы на пулеметы и видеть, что рабочие заняты тем, что просит, я хочу узнать запросы, которые делают их занятыми. Я пробовал --log-file=- --log-level=debug
, но он ничего не говорит о запросах, мне нужны более подробные журналы.Gunicorn не отвечает
ответ
Из последних Gunicorn документы, на CMD линии/скрипт вы можете использовать:
--log-file - ("-" means log to stderr)
--log-level debug
или в конфигурационном файле вы можете использовать:
errorlog = '-'
accesslog = '-'
loglevel = 'debug'
но нет никакого упоминания о параметров, которые вы указали в своем запросе:
--log-file=-
--log-level=debug
Запись по умолчанию для доступа - «Нет» ()), поэтому выстрелил в темноте, но это может объяснить, почему не получают подробную информацию журнала. Вот sample config file от источника Gunicorn, и последний Gunicorn config docs.
Кроме того, вы можете ознакомиться с changing your logging configuration в Django.
--log-file = - эквивалентен файлу -log - он показывает много журналов, но не подробные журналы, которые я хочу. Мне нужно знать, сколько времени требуется каждый запрос для обработки на сервере. – Sassan
Хотя я также ищу хороший ответ, чтобы узнать, сколько рабочих занято, вы решаете эту проблему неправильно. Для выполнения этой задачи вам понадобится рабочий, например Celery/RabbitMQ, для асинхронного поднятия тяжелой позиции, в то время как ваш цикл запроса/ответа остается быстрым.
У меня есть скрипт на моем сайте, который может занять 5 + минуты, а вот хороший шаблон я использую:
- Когда запрос первым приходит, нерест задачи и просто возвращает HTTP 202 принят. Его цель - «Запрос принят для обработки, но обработка не завершена».
- Сделайте свой опрос на уровне фронта той же конечной точкой (каждые 30 секунд должно быть достаточно). Пока задача не завершена, верните сообщение 202
- В конце концов, когда он завершит возврат 200, наряду с любыми данными, которые могут понадобиться интерфейсу.
Для моего сайта мы хотим обновить данные более 10 минут. Я передаю заголовок Accept-Datetime, чтобы указать, сколько лет данных является приемлемым. Если наша локальная кешированная копия старше этого, мы запускаем цикл задачи.
Нет, это не всегда хорошее решение, «обычно» это правильно, но не всегда. Иногда логика заключается в том, чтобы заставить пользователя ждать, пока ответ не будет готов (как бы это ни потребовалось), и покажите ему ответ.В моем случае мне нужно было это сделать, и поэтому я спросил его здесь (во всяком случае, я не тот, кто проголосовал за ваш ответ) – Sassan
Хорошо, конечно. Я предлагаю только ответ. Но как вы «заставляете пользователя ждать»? Что произойдет, если они нажмут обновление? Продолжается ли работа или начинается ли она. Если это будет продолжаться, как они получат обновление статуса? – user3681414
Я только что создал учетную запись с Datadog. У них есть интеграция с оружием, что позволит вам увидеть, сколько рабочих занято против свободного. – user3681414
- 1. Heroku + gunicorn не работает (Баш: gunicorn: команда не найдена)
- 2. Upstart Gunicorn не работает
- 3. Команда Gunicorn не работает
- 4. gunicorn worker не загружается
- 5. Gunicorn не перезагружает работника
- 6. Gunicorn + Django + руководитель - руководитель не может начать Gunicorn: ENOENT
- 7. gunicorn: start: Не удалось запустить
- 8. Работники Django Gunicorn не загружают
- 9. Django and Gunicorn не разговаривает
- 10. gunicorn не обслуживает статические файлы
- 11. gunicorn не найден на heroku
- 12. gunicorn не может запустить колбу
- 13. nginx + gunicorn + django не работает
- 14. Джанго-Nginx-gunicorn - не работает
- 15. Gunicorn APPMODULE
- 16. Gunicorn + eventlet таймаут
- 17. Вращение журнала с Gunicorn
- 18. Heroku Gunicorn Procfile
- 19. Gunicorn обработчик журнала logstash
- 20. Django, Gunicorn Setup
- 21. Gunicorn Django Threading
- 22. gunicorn нити на Heroku
- 23. проблемы производительности Gunicorn/Колба
- 24. ListView setOnItemClickListener не отвечает
- 25. @media раздел не отвечает
- 26. IE не отвечает NBSP
- 27. Hiveserver2 не отвечает
- 28. ADB не отвечает
- 29. BlackBerry - Thread не отвечает
- 30. pubnub.subscribe не отвечает
Моя догадка заключается в том, что в некоторых из ваших запросов обрабатывается код. При 30-секундном таймауте пострадавшие работники в конечном итоге освободятся. С 0,9 мегасекундным таймаутом они фактически не будут. –
Понятно, вот почему мне нужны журналы, чтобы узнать, что происходит. – Sassan