更新的代码未在服务器上执行

时间:2015-07-13 20:29:21

标签: python django

我已在生产服务器上修改了.py文件,但未应用更改。起初我以为这是因为相关的.pyc文件没有被更新。所以我删除了.pyc文件并测试了希望.py文件将编译成新的.pyc文件。应用程序行为未更新,并且未创建新的.pyc文件。 This was done based off a previous question.

如何在不生成新.pyc文件的情况下执行脚本?以下是有问题的两个文件:

-rw-r--r--  1 ubuntu ubuntu  47872 Jul 13 04:39 admin_email.py
-rw-r--r--  1 root   root    48212 Feb 10 03:12 admin_email.pyc

admin_email.pyc已被删除。只有admin_email.py仍在服务器上。

以下是执行已更改脚本的代码:

from xxx.admin_email import send_email_admins
...
g = lambda x, y, z: send_email_admins(x, y, z)
...
threading.Thread(target=g, args=(order_id, request.user.email, form.cleaned_data)).start()

该应用程序正在使用gunicorn + nginx

关于问题的任何想法?为什么要创建新的.pyc文件?更重要的是,为什么应用程序行为没有更新?

1 个答案:

答案 0 :(得分:1)

我假设你在起诉wsgi或fcgi - 最有可能是在apache或nginx上

使用wsgi - 通常apache会为你缓存你的django。

因此,您需要告诉apache / nginx / server-provider您的django代码已更改。执行此操作的方法是更改​​.wsgi文件的“上次编辑”元信息。所以,你可以简单地做touch /path/to/django.wsgi,它通常会起作用。

如果你使用fcgi,同样适用。