2017-01-20 4 views
1

У меня есть сайт Django, и любые обновления, которые я делаю в исходный код, не будут обновляться.Исходный код Django не будет обновляться на сервере

(Причина: Я меняю файл, потому что одна строка кода генерирует ошибку. Что странно, я прокомментировал эту строку кода, которая вызывает ошибку, но код все еще работает и, таким образом, все еще вызывает ошибку. В django.log это показывает, что строка вызывает ошибку, но она также показывает, что она закомментирована сейчас. Таким образом, журнал ошибок показывает мой новый исходный код, но само приложение не выполняет новый код)

Я очень новый для Django, поэтому я действительно не знаю, что здесь происходит (не мой сайт, я был брошен на этот проект для работы.)

Исследуя это, я уже пытался перезапустить apache:

$ sudo apachectl restart

$ sudo service apache2 restart

, и я также пытался коснуться wsgi.py файла:

$ touch wsgi.py

и я даже удалил файл .pyc. Ничего не работает, и старая строка кода все еще выполняется, хотя журналы показывают, что они закомментированы.

Не знаете, где еще проверить или что еще мне не хватает.

+1

Вы используете mod_wsgi для апача для запуска Django, или вы работаете с Django uwsgi или gunicorn (за апача)? Если последний, убедитесь, что вы также перезапускаете этот процесс. –

+0

Что это работает, является локальным или в производстве? – BigMonkey89WithaLeg

+0

@JoeJ У меня нет подсказки. Где я могу проверить это или как я узнаю? – amallard

ответ

2

Какое бы обслуживание вы ни использовали, выполните полную остановку и полный старт (т. Е. Не просто перезапустите).

sudo service apache2 stop 
sudo service apache2 start 

Если вы используете uwsgi или gunicorn, вам придется сделать то же самое для них. Некоторые сценарии инициализации при выпуске restart не перезапускают процесс мастера, который может привести к сохранению сохраненной в кэше скомпилированной версии вашего файла в памяти (с неправильным кодом).

+0

Если вы используете uwsgi, то способ перезагрузки может отличаться –

0

С помощью @ 2ps я смог выяснить свою проблему. Когда я попытался остановить Apache, сайт все еще был наверх.

Я понял, что есть еще один IP-адрес для веб-сайта, поэтому я предполагаю, что первый должен перенаправить на второй?

В любом случае, я снова открыл SSH на другом IP-адресе, перезапустил Apache, и исходный код обновился немедленно!

UPDATE:

По желанию @VidyaSagar, я обеспечиваю больше информации, как это кажется странной случайность с Django. Мой OP заключался в том, что некоторая строка кода вызывала ошибку. Я прокомментировал эту строку, удалил файл .pyc и перезапустил Apache. Произошла другая ошибка (как и ожидалось из-за кода). Итак, я прокомментировал эту строку до того, как это было ранее, снова удалил .pyc и перезапустил Apache, и система работала, как обычно. Кажется, что Django просто хотел, чтобы у меня была новая перекомпиляция файла?

Django версия: 1.7.4

Traceback из django.log

ERROR Internal Server Error: /upload/ 
Traceback (most recent call last): 
    File "/home/company/app/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "/home/company/app/app/geo_app/views.py", line 306, in upload 
    shutil.make_archive(kml_dir, 'zip', root_dir=kml_dir) 
    File "/usr/lib/python2.7/shutil.py", line 521, in make_archive 
    save_cwd = os.getcwd() 
OSError: [Errno 2] No such file or directory 

ERROR Internal Server Error: /upload/ 
Traceback (most recent call last): 
    File "/home/company/app/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "/home/company/app/app/geo_app/views.py", line 306, in upload 
    # shutil.make_archive(kml_dir, 'zip', root_dir=kml_dir) 
    File "/usr/lib/python2.7/shutil.py", line 521, in make_archive 
    save_cwd = os.getcwd() 
OSError: [Errno 2] No such file or directory