我有一个Django网站正在运行,我对源代码所做的任何更新都不会更新。
(原因我改变文件的原因是因为一行代码产生错误。奇怪的是,我注释掉导致错误的这行代码,但代码仍在运行,因此仍然会导致错误。在django.log
中它显示导致错误的行,但它也显示它现在已注释掉。所以错误日志显示我的新源代码,但应用程序本身并没有执行新代码)
我对Django很新,所以我真的不知道这里发生了什么(不是我的网站,我在这个项目上工作了。)
为此研究,我已经尝试重启apache:
$ sudo apachectl restart
$ sudo service apache2 restart
我也尝试触摸wsgi.py
文件:
$ touch wsgi.py
我甚至删除了.pyc
文件。没有任何工作,旧的代码行仍在执行,即使日志显示它被注释掉了。
不确定在哪里检查或我还缺少什么。
答案 0 :(得分:2)
无论您使用哪种服务,都要完全停止并完全启动(即不仅仅是重新启动)。
sudo service apache2 stop
sudo service apache2 start
如果你使用uwsgi或gunicorn,你必须为他们做同样的事情。发出restart
时,某些init脚本不会重新启动主工作进程,这可能会导致文件的缓存编译版本仍驻留在内存中(使用不正确的代码)。
答案 1 :(得分:0)
在@ 2ps的帮助下,我能够找出问题所在。当我试图阻止Apache时,该网站仍在运行。
我意识到网站还有另一个IP地址,所以我猜第一个必须重定向到第二个?
无论哪种方式,我在其他IP地址重新打开SSH,重启Apache并立即更新源代码!
更新:
根据@VidyaSagar的要求,我提供了更多信息,因为它似乎是一个与Django奇怪的侥幸。我的OP是某行代码导致错误。我注释掉了这一行,删除了.pyc
文件,然后重新启动了Apache。发生了另一个错误(由于代码的原因,预期)。那么我就回过头来回复它之前的状态,再次删除.pyc
并重新启动Apache,系统正常工作。似乎Django只是想让我对文件进行重新编译?
Django版本:1.7.4
追溯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
答案 2 :(得分:0)
对于使用cPanel的用户,如果进入“ Setup Python App”(设置Python应用程序),然后单击“ Restart”(重新启动),它将进行更新。为我救了大约5次。