Nginx и Gunicorn с Virtualbox обслуживают старую версию статических файлов Django, дополненных / обрезанных до нового размера файла, отключение отправки файла не работает

Моя проблема такая же, как описано -match-l">здесь и здесь, но за исключением того, что установка sendfile off; в nginx.conf не помогает.

Я запускаю Vagrant с Virtualbox (Ubuntu 16.04) и Nginx, Gunicorn и Django. Я использую эту настройку для разработки, поэтому хочу избежать вызова collectstatic каждый раз при изменении файла. Таким образом, Nginx направляет все запросы в Gunicorn (даже «/static/»), а Gunicorn обслуживает статические файлы, используя этот подход:

if settings.DEBUG:
    from django.contrib.staticfiles.urls import staticfiles_urlpatterns
    urlpatterns += staticfiles_urlpatterns()

Это работает, за исключением того, что если я что-то изменяю в статическом файле, содержимое не обновляется, а только размер файла. Я попытался установить sendfile off; в nginx.conf, а также в своей конфигурации Gunicorn. Тем не менее, проблема остается. Есть ли способ, которым я мог бы попытаться сузить возможную причину этой проблемы?

Все файлы Django находятся в папке, которая используется совместно с хост-системой Windows 10, но если я использую vagrant ssh и извлекаю файлы, они обновляются правильно.

Редактировать: проблема сохраняется, если я запускаю Gunicorn только без Nginx, так что это похоже на проблему Gunicorn/Django.


person Erik Lumme    schedule 09.06.2017    source источник


Ответы (1)


Догадаться.

Мне также нужно было запустить Gunicorn с флагом --no-sendfile. Я пытался установить его в своем ini-файле до (no_sendfile = True), но это не сработало. Однако добавление --no-sendfile к моей команде запуска Gunicorn в супервизоре сработало!

person Erik Lumme    schedule 09.06.2017