python - 禁用 python 文件的 Apache 缓存

标签 python django apache caching

我正在使用 django 并进行 facebook 集成,为此需要一个测试服务器。我在 Apache 及其缓存 .pyc 文件方面遇到了很多问题,我什至 asked here on stackoverflow .

该解决方案有效,但我想知道是否有禁用此类文件的 Apache 缓存的选项。服务器重启对我来说可能是个问题。

编辑:

这里是 django.wsgi 代码:

path = '/not/actual/path'
if path not in sys.path:
    sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'notactualproj.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

最佳答案

如何解决你的“字节码问题”

您可能首先应该弄清楚为什么那些不需要的 .pyc 文件在那里(这些在您的存储库中吗?应该忽略它们)。

如评论中所述,如果您有导致问题的悬空 .pyc 文件,您可以将删除所有 .pyc 文件作为拉取过程的一部分,当您将更新的代码部署到服务器。运行该应用程序将重新创建导入模块时所需的那些。


现在,如果你真的不想生成字节码,你可以使用 the PYTHONDONTWRITEBYTECODE environment variable ,但我不建议这样做,因为它似乎是一个非常过分的解决方案。

如何解决 Apache 看似拉取旧版本代码的问题。

现在,您必须区分两个问题。

  • 由 python 生成的较旧的字节码文件(例如 .pyc 文件),这在特定情况下可能会导致问题,例如用模块替换文件,但通常不会引起关注。<
  • Mod WSGI 不会重新加载上传的更新代码。这取决于您运行 Mod WSGi 的模式,通常的症状是点击页面似乎会随机拉取较新或较旧版本的代码。

要解决第一个问题,您只需删除未使用的字节码文件即可。但是,这可能不是导致您出现问题的原因。

要解决第二个问题,您有两个解决方案

  • 在您上传更新的代码时重新启动 Apache。使用 apache2ctl -k graceful,这对您的用户来说是透明的,我不明白为什么“服务器重启可能是个问题”,除非您使用的是共享主机。
  • 使用代码重新加载,您可能需要 have a look at the mod_wsgi文档。

我不认为字节码是您的问题,代码重新加载可能是。

关于python - 禁用 python 文件的 Apache 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12671944/

相关文章:

python - 混合经过身份验证和未经身份验证的 URL、Internet Explorer 和 mod_auth_sspi

python - 在google colab中训练MNIST数据集问题:

python - 无法附加到调试器中的进程

python - 如何将时间对象转换为总分钟数python

python - Pandas系列不区分大小写的匹配和值之间的部分匹配

ruby-on-rails - Apache 如何导致重复请求?

django - 具有 1 个线程的 django 如何可以提供并发访问?

django - Django 中多对多字段结构所需的建议

sql - 如何在 Django 插入 - 自定义模型字段中使用 SQL nextval 函数?

apache - 防止在没有 .htaccess 的情况下从 Apache 访问文件