uWSGI以错误的顺序加载Django应用程序(按字母顺序而不是按INSTALLED_APPS中定义的顺序加载)

时间:2013-02-20 08:14:57

标签: django uwsgi

我有一个Django项目,运行在由supervisord控制的uwsgi上的virtualenv中。 在Django项目中,我有一个额外的目录'apps /',我放了所有的Django应用程序。在我的settings.py中,我将'apps /'目录添加到python路径,以便找到其中的Django应用程序。

这对runserver非常有用。但我的生产环境中有uwsgi。当我启动服务器时,Django应用程序按字母顺序加载,因为它们在文件系统中,而不是按INSTALLED_APPS定义的顺序加载。

一个例子:我在我的文件系统中有这些应用程序:

/home/anton/project/apps/events
/home/anton/project/apps/profiles
/home/anton/project/apps/routes

配置文件是我的扩展用户配置文件,路由是自行车路线,事件取决于路线,因为事件可以有1..n路线。

所以在我的INSTALLED_APPS中,它是这样定义的:

INSTALLED_APPS = [
   # .. django stuff ..
   'profiles',
   'routes',
   'events',
]

在events app的models.py中,我从路线应用中导入模型。只要按照INSTALLED_APPS设置中指定的顺序加载Django应用程序,一切正常。但uWSGI按字母顺序加载Django应用程序。因为事件是在路由之前加载的,所以我在events.py中的models.py中收到以下错误:

ImportError at /
cannot import name Route

/myproject/app/src/apps/events/models.py in <module>
    from routes.models import Route 

因此,当加载事件应用程序时,uwsgi不知道路由应用程序。 难道不是uwsgi加载所有python模块(读取:Django应用程序)然后开始执行请求?

非常感谢每一个提示!

谢谢, 安东

PS:

这是我的uwsgi.ini配置(也许这有帮助)

[uwsgi]
http-socket = :8081
master = true
workers = 8

pidfile = /tmp/uwsgi-project.pid

chdir = /project/app/src/apps/
pythonpath = /project/app/src/
module = wsgi
virtualenv = /home/anton/.virtualenvs/project/

env = DJANGO_SETTINGS_MODULE=settings
logto = /project/log/uwsgi-bikemap.log

max-requests = 5000
vacuum = true

'/ project / app / src /'是Django项目的所在。 '/ project / app / src / apps'是Django应用程序的所在。 wsgi.py(由module = wsgi引用)位于'/ project / app / src /'

0 个答案:

没有答案