Django с gunicorn: отправка запросов - параллелизм

У нас есть Django-приложение, настроенное на gunicorn. Это означает, что несколько рабочих обрабатываются параллельно. Теперь для некоторой функциональности нам нужно вызвать сервис для обратного геокодирования, выглядящий примерно так:

    reverseGeocodingURL = s.geocodingURL + '?lat=' + str(latitude) + '&lon=' + str(longitude) + '&api_key=' + s.apiKey

Теперь кажется, что иногда ответы не соответствуют запросам. Вероятно, это проблема параллелизма, когда один рабочий gunicorn получает ответ на запрос, выданный другим рабочим. Возможно ли такое? И какие у нас есть возможности обойти эту проблему?

Если причина в параллелизме, есть два способа решения проблемы

  1. Первый способ: Запуск только одного рабочего процесса

Это может вызвать проблемы с производительностью, если объем очень велик. Шаги по реализации: если вы используете конфигурационный файл gunicorn, то измените номер рабочего на 1

workers = 1

если вы напрямую запускаете gunicorn с помощью команды, то добавьте worker=1 в команду, как argumerts.

gunicorn --workers=2
  1. Второй способ: запустить Django со статическим секретным ключом

установите это в файле settings.py SECRET_KEY = '=v@drifp^(2p5l#hvm=qzlt17(4lp!n$#)_qc9lik8z1jm(stw'

Вернуться на верх