django + uwsgi,启动代码放在哪里?

1 投票
1 回答
952 浏览
提问于 2025-04-18 11:33

我想把我的启动代码放在 mysite/__init__.py 这个文件里。

当我运行 python manage.py run 时,启动代码会被执行。

但是当我用 uwsgi 启动 Django 时,这段启动代码就没有被执行。

我试过把启动代码放在几个不同的地方,但在 uwsgi 启动时都没有执行。

我该怎么做才能在 uwsgi 启动时执行这段启动代码呢?

1 个回答

2

把你的启动代码放在一个单独的文件里,比如叫 startup.py,然后修改这两个文件:

manage.py

# some code
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "[project name].settings")
if __name__ == "__main__":
    import startup
    # the rest of the code

[项目名称]/wsgi.py

# some code
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "[project name].settings")
import startup
# the rest of the code

注意顺序:导入代码的部分总是在设置 environ 之后(这可能不太重要,具体要看你的启动代码做了什么)。

在Django1.7中,你可以为每个应用使用 ready 函数。可以看看这个链接:

https://docs.djangoproject.com/en/dev/ref/applications/#django.apps.AppConfig.ready

撰写回答