禁用python文件的Apache缓存

pro*_*ype 3 python apache django caching

我正在使用django并进行facebook集成,这需要一个测试服务器.我在Apache及其.pyc文件的缓存方面遇到了很多问题,我甚至在这里询问了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()
Run Code Online (Sandbox Code Playgroud)

Tho*_*zco 7

如何解决你的"字节码问题"

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

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


现在,如果你真的不希望有生成的字节码,你可以使用PYTHONDONTWRITEBYTECODE环境变量,但我不会建议,因为它似乎相当过分的解决方案.

如何解决Apache似乎拉旧版本的代码.

现在,你必须在这里发挥两个问题的区别.

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

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

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

  • 上传较新代码时重新启动apache.使用apache2ctl -k graceful,这将对您的用户透明,我不明白为什么"服务器重启可能是一个问题",除非您在共享主机上.
  • 使用代码重新加载,您可能希望查看mod_wsgi文档.

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