Веб-приложение Django, развернутое на Heroku с использованием Gunicorn - Половина запросов не выполняется случайным образом (код ошибки 500) - PullRequest
0 голосов
/ 06 июня 2018

Я развернул веб-приложение Django на Heroku, используя сервер gunicorn wsgi.Все отлично работает на локальном компьютере.

Это мой procfile web: gunicorn traineau.wsgi

Для простоты, когда я нажимаю одну из кнопок в приложении, он должен просто сделать Prod1=Prod1+1. в Python, а затемвозвращает его в JS с помощью return HttpResponse(json.dumps(raw_dict), content_type="application/json") и отображает обновленное значение Prod в приложении.

Prod1 - глобальная переменная, так как она мне нужна в других функциях.

Когда я запускаю свое приложение и нажимаюЭта кнопка пару раз, половина запросов, которые я делаю, не с кодом ошибки 500 (Внутренняя ошибка сервера), но случайно.Например: 1ok, 3fail, 2ok, 5fail.В конце, с достаточно большим семплом, он довольно близок к 50% -ному провалу.

Я знаю, что Gunicorn - это рабочая модель prefork, и heroku устанавливает по умолчанию 2 WEB_CONCURRENCY.Я установил для WEB_CONCURRENCY значение 1 в CONFIG_VAR в Heroku, и это не помогло.

Если я перезапущу приложение пару раз, не перезапуская dyno, вместо кода ошибки 500, в конечном итоге он будет чередоваться между 2диапазоны значений.Пример 1-2-3-4-20-21-5-6-7-22-23 и т. Д. Если я перезапущу dyno, мы вернемся с 50% неудачами.

Я использую бесплатныеDyno.Я попытался перейти на Hobby, но ничего не изменилось.

=== web (Free): gunicorn traineau.wsgi (1)
web.1: up 2018/06/06 18:25:08 +0200 (~ 2m ago)

Поскольку это приложение предназначено только для 1 пользователя (в учебных целях), было бы лучше использовать что-то еще, а не Gunicorn?Решит ли это мою проблему, если я, например, использую uWSGI?

...