Django urls.py не обновляется, пока Apache не перезагрузится - PullRequest
0 голосов
/ 16 февраля 2019

Кажется, что изменения в файле urls.py в моем проекте Django игнорируются, если я не перезагружаю Apache.Есть идеи, почему это происходит?Это мой виртуальный хост-файл:

<IfModule mod_ssl.c>
  <VirtualHost www.mydomain.com:443>
    ServerName www.mydomain.com
    ServerAdmin myaddress@mydomain.com

    WSGIScriptAlias / /var/www/html/www.mydomain.com/myproject/wsgi.py
    WSGIDaemonProcess myproject python-path=/var/www/html/www.mydomain.com:/var/www/html/www.mydomain.com/env/lib/python3.6/site-packages
    WSGIProcessGroup myproject

    <Directory /var/www/html/myproject>
       <Files wsgi.py>
          Order deny,allow
          Allow from all
       </Files>
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # Let's Encrypt files
    SSLCertificateFile /etc/letsencrypt/live/www.mydomain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.mydomain.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
  </VirtualHost>
</IfModule>

В противном случае изменения применяются мгновенно, как я могу проверить с помощью команды show_urls из django-extensions .

1 Ответ

0 голосов
/ 16 февраля 2019

Поскольку файлы Python кэшируются как байт-код и uwsgi использует их.

Вы заметили, __ pycache __ и *. Файлы pyc генерируются автоматически при каждом запускефайлы python, эти файлы являются файлами байт-кода python.

Вам необходимо установить функцию сенсорной перезагрузки в файле конфигурации uwsgi, чтобы заменить эти кэшированные файлы и сгенерировать свежую, чтобы внести изменения в ваше последнее редактирование.

В вашем конфигурационном файле uwsgi установите его следующим образом:

[uwsgi]

touch-reload = /path/to/your/django/project/reload.ini

Если у вас нет автоматической перезагрузки в конфигурационных файлах конфигурации uwsgi, вам необходимо перезагрузить приложение или перезапустить uwsgi для вступления в силу новой конфигурации.

Всякий раз, когда вы вносите изменения в свой код, вы можете перезагрузить его с помощью сенсорной команды.

$ touch /path/to/your/django/project/reload.ini

Нет необходимости перезагружать или перезапускать Apache.

Документы: TheArt of Graceful Reloading

Если вы используете git для отправки кода, вы можете использовать ловушку post-receive, чтобы это произошло автоматически.

Подобная тема здесь Как настроить Gitкрюк после фиксации

...