【问题标题】:Django code changes not reflecting on production serverDjango 代码更改未反映在生产服务器上
【发布时间】:2013-01-24 02:59:25
【问题描述】:

我更改了一个 .py 文件,并且更改反映在本地开发人员上。删除 .pyc 后 Django 的服务器。 生产服务器甚至没有这个特定文件的 .pyc。尝试触摸 apache wsgi 并在产品上重新启动 apache。服务器,但没有运气。 即使删除此 .py 文件,应用程序也可以正常工作。安装了 memcached,但我不太清楚它是如何缓存的,还有 .git 和 5 个服务器托管 - 一个主服务器,4 个负载均衡器。

问候!

【问题讨论】:

  • 听起来页面像反向代理一样缓存在某处
  • 您能否详细说明并指定我可以尝试清除缓存的方法?
  • 我不是系统管理员,所以我无法为您提供具体帮助

标签: python django apache caching memcached


【解决方案1】:

您是否 100% 确定您正在查看要进行更改的正确服务器?我知道这听起来很愚蠢,但是,你为什么不停止 Apache,那么你还能运行页面吗?如果可以,那么您肯定没有正确的服务器。

如果没有,接下来尝试重新加载 Apache(这与重新启动不同)。

sudo service apache2 reload

如果这仍然不起作用,请发布您的 Apache 设置,如果必须在错误的文件夹中查找您推送的文件夹。

【讨论】:

  • 谢谢... 重新加载起到了神奇的作用。间歇性工作,说 10 次中有 8 次...任何建议如何永久修复...
  • 这取决于您是否遇到错误。设置日志并检查它失败的时间,这可能会给你一个想法。
  • 正如@Tarilo 在对该问题的评论中提到的,缓存静态内容的浏览器有时会产生同样的问题。对我来说,我对网页 css 所做的更改并没有出现在生产中。浪费了大约 20 分钟寻找问题,直到 Tarilo 的评论提醒我清除缓存,这立即解决了问题。不是这个特定问题的解决方案,但它可以为另一个人节省一些时间。
【解决方案2】:

如果您使用 uwsgi 作为网关,请在 uwsgi 设置中设置 touch-reload 参数 你只需要

$ touch <your-touch-reload-file>

在控制台中反映更改

如果你将 apache 与 mod_python 或 mod_wsgi 一起使用,你必须重新启动 apache 才能应用更改

【讨论】:

  • 使用 mod_wsgi... 试过 /etc/init.d/apache2 stop 然后 /etc/init.d/apache2 start 还是不行 :( 即使添加一个新的 URL 也行不通。肯定被缓存在某个地方!
  • @Levon 你能提供或指出一个在 uwsgi 中触摸重载的例子吗?
【解决方案3】:

你必须重启你的服务器(WSGI、UWSGI 或者你在生产环境中使用的任何东西)

【讨论】:

  • 服务器已经硬重启,apache重启了。 WSGI也必须重新启动?抱歉,我对这个 WSGI 的东西不太了解。只需从其他类似帖子中阅读即可。
  • 如果你硬重启你的服务器,你不需要重启进程。如果这对您没有帮助,也许您还必须清理源目录中的 *.pyc 文件。但我认为只要硬重启就足够了。
  • 即使删除 .py 文件也没有影响。这意味着它肯定被缓存了,并且没有.pyc与之对应。我什至尝试在 / 上查找
猜你喜欢
  • 2019-03-11
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 2019-07-11
  • 1970-01-01
  • 2015-03-15
  • 1970-01-01
  • 2019-10-16
相关资源
最近更新 更多