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

时间:2012-05-24 17:02:58

标签: python django gunicorn

我正在将一个Django应用程序从modWSGI转换为Gunicorn / NGINX。我有一些django代码,我从modwsgi文件运行,以确保它在服务器启动时运行。我正在试图弄清楚如何在Gunicorn创业公司上工作。

免责声明 - 我想要访问的代码是一个穷人的缓存,它处理来自数据库的数据并将其存储为对我稍后在Django应用程序中执行的许多操作都很友好的格式。 与使用缓存解决方案相比,此问题与此方法的优点无关。

这是我在mod-WSGI中运行的代码很好:

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

其中'accx'是Django项目,'navigation'是Django应用程序。

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

def when_ready(server):
    from navigation.views import rebuild_cache_all
    rebuild_cache_all()

我也尝试在此代码的各个地方附加到sys.path,但无论我做什么,我都会收到以下错误:

ImportError: No module named navigation.views

我错过了一些明显的东西吗?我是以错误的方式解决这个问题吗?任何和所有指导表示赞赏!

............. ANSWER .............
在输入上述问题之后,我正在通过其他一些枪支问题进行阅读,这些问题与我的问题“相关”,但在我的搜索中没有显示出来。虽然这样做,我想出了我的问题。

尾随斜线!

尝试添加到gunicorn中的sys.path时,我没有使用过。一旦我解决了这个问题,gunicorn就开始抱怨它失去了它的Django_settings_module,所以我最终也不得不提供它。

以下是我现有的工作:

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()

可能还有另一种更清洁的方式,但这让我工作。

0 个答案:

没有答案