【问题标题】:Django source code won't update on serverDjango 源代码不会在服务器上更新
【发布时间】:2017-01-20 05:37:38
【问题描述】:

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

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

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

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

$ sudo apachectl restart

$ sudo service apache2 restart

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

$ touch wsgi.py

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

不知道还有什么地方可以检查或我还缺少什么。

【问题讨论】:

  • 您是使用 mod_wsgi for apache 来运行 Django,还是使用 uwsgi 或 gunicorn(在 apache 之后)运行 Django?如果是后者,请确保您也重新启动该过程。
  • 它在什么平台上运行,是本地的还是生产环境的?
  • @JoeJ 我不知道。我在哪里可以检查或者我怎么知道?
  • @BigMonkey89WithaLeg 上线了
  • @amallard 如果您执行“ps -ef”,您可能会看到“uwsgi”或“gunicorn”作为进程之一(与 apache 不同)

标签: python django apache wsgi


【解决方案1】:

无论您使用的是哪个服务,都应完全停止和完全启动(即,不只是重新启动)。

sudo service apache2 stop
sudo service apache2 start

如果您使用的是 uwsgi 或 gunicorn,则必须对它们执行相同的操作。发出restart 时的某些初始化脚本不会重新启动主工作进程,这可能会导致文件的缓存编译版本仍驻留在内存中(使用不正确的代码)。

【讨论】:

  • 如果您使用的是 uwsgi,重启方式可能会有所不同
【解决方案2】:

在@2ps 的帮助下,我能够找出我的问题。当我试图停止 Apache 时,该网站仍在运行。

我意识到该网站还有另一个 IP 地址,所以我猜第一个必须重定向到第二个?

不管怎样,我在另一个 IP 地址重新打开了 SSH,重新启动了 Apache 并立即更新了源代码!

更新:

根据@VidyaSagar 的要求,我提供了更多信息,因为这似乎是 Django 的一个奇怪的侥幸。我的操作是某行代码导致错误。我注释掉了这一行,删除了.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

【讨论】:

    【解决方案3】:

    对于那些使用 cPanel 的人,如果您进入“设置 Python 应用程序”并单击“重新启动”,它应该会更新。救了我大约 5 次。

    【讨论】:

      猜你喜欢
      • 2019-03-11
      • 2015-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-10
      • 2013-01-24
      相关资源
      最近更新 更多