在Gunicorn配置文件中访问Django代码

2024-06-02 07:08:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将Django应用程序从modWSGI转换为Gunicorn/NGINX。我有一些从modwsgi文件运行的django代码,以确保它在服务器启动时运行。我在想办法让这个在Gunicorn创业公司运作。在

免责声明-我想访问的代码是一个穷人的缓存,它处理数据库中的数据,并以一种对我以后在Django应用程序中做的很多事情都很友好的格式存储。与使用缓存解决方案相比,此问题不是关于此方法的优点。

以下是我在mod WSGI中使用的代码,它运行得很好:

sys.path.append('/src/accx/navigation')
from navigation.views import rebuild_cache_all
rebuild_cache_all()

Django就是导航,Django就是导航。在

现在,我正试图用Gunicorn做同样的事情。在

^{pr2}$

我也试过在系统路径在这段代码的不同地方,但是无论我做什么,我都会得到以下错误:

ImportError: No module named navigation.views

我错过了什么明显的东西吗?我是不是走错了路?感谢任何和所有的指导!在

………回答………
在把上面的问题打出来之后,我仔细阅读了其他一些与我的问题“相关”但在搜索中没有出现的gunicorn问题。在这样做的同时,我发现了我的问题。在

尾随斜杠!

我在尝试添加到系统路径在古尼科恩。一旦我修复了这个问题,gunicorn开始抱怨它丢失了Django_设置_模块,所以我也不得不提供这个模块。在

以下是我现有的有效方法:

import sys,os
if not '/src/accx-venv/' in sys.path:
    sys.path.insert(0,'/src/accx-venv/')

os.environ["DJANGO_SETTINGS_MODULE"] = "accx.settings"

def when_ready(server):
    if not '/src/accx-venv/accx/' in sys.path:
        sys.path.insert(0,'/src/accx-venv/accx/')
    from navigation.views import rebuild_cache_all
    rebuild_cache_all()

也许还有其他更干净的方法,但这让我工作起来了。在


Tags: pathdjango方法代码importsrccachevenv