Я развернул веб-приложение 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?