Django с gunicorn: отправка запросов - параллелизм
У нас есть Django-приложение, настроенное на gunicorn. Это означает, что несколько рабочих обрабатываются параллельно. Теперь для некоторой функциональности нам нужно вызвать сервис для обратного геокодирования, выглядящий примерно так:
reverseGeocodingURL = s.geocodingURL + '?lat=' + str(latitude) + '&lon=' + str(longitude) + '&api_key=' + s.apiKey
Теперь кажется, что иногда ответы не соответствуют запросам. Вероятно, это проблема параллелизма, когда один рабочий gunicorn получает ответ на запрос, выданный другим рабочим. Возможно ли такое? И какие у нас есть возможности обойти эту проблему?
Если причина в параллелизме, есть два способа решения проблемы
- Первый способ: Запуск только одного рабочего процесса
Это может вызвать проблемы с производительностью, если объем очень велик. Шаги по реализации: если вы используете конфигурационный файл gunicorn, то измените номер рабочего на 1
workers = 1
если вы напрямую запускаете gunicorn с помощью команды, то добавьте worker=1 в команду, как argumerts.
gunicorn --workers=2
- Второй способ: запустить Django со статическим секретным ключом
установите это в файле settings.py SECRET_KEY = '=v@drifp^(2p5l#hvm=qzlt17(4lp!n$#)_qc9lik8z1jm(stw'