Django源代码在服务器

时间:2017-01-20 05:37:38

标签: python django apache wsgi

我有一个Django网站正在运行,我对源代码所做的任何更新都不会更新。

(原因我改变文件的原因是因为一行代码产生错误。奇怪的是,我注释掉导致错误的这行代码,但代码仍在运行,因此仍然会导致错误。在django.log中它显示导致错误的行,但它也显示它现在已注释掉。所以错误日志显示我的新源代码,但应用程序本身并没有执行新代码)

我对Django很新,所以我真的不知道这里发生了什么(不是我的网站,我在这个项目上工作了。)

为此研究,我已经尝试重启apache:

$ sudo apachectl restart

$ sudo service apache2 restart

我也尝试触摸wsgi.py文件:

$ touch wsgi.py

我甚至删除了.pyc文件。没有任何工作,旧的代码行仍在执行,即使日志显示它被注释掉了。

不确定在哪里检查或我还缺少什么。

3 个答案:

答案 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次。