我已在生产服务器上修改了.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
文件?更重要的是,为什么应用程序行为没有更新?
答案 0 :(得分:1)
我假设你在起诉wsgi或fcgi - 最有可能是在apache或nginx上
使用wsgi - 通常apache会为你缓存你的django。
因此,您需要告诉apache / nginx / server-provider您的django代码已更改。执行此操作的方法是更改.wsgi
文件的“上次编辑”元信息。所以,你可以简单地做touch /path/to/django.wsgi
,它通常会起作用。
如果你使用fcgi,同样适用。