您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

仅在Django启动一次时执行代码?

仅在Django启动一次时执行代码?

从以下Pykler的答案进行更新:Django 1.7现在对此具有钩子

不要这样

你不希望一次性使用“中间件”。

你要在顶层执行代码urls.py。该模块将被导入并执行一次。

urls.py

from django.confs.urls.defaults import *
from my_app import one_time_startup

urlpatterns = ...

one_time_startup()

文件myapp/apps.py

from django.apps import AppConfig
class MyAppConfig(AppConfig):
    name = 'myapp'
    verbose_name = "My Application"
    def ready(self):
        pass # startup code here

文件myapp/__init__.py

default_app_config = 'myapp.apps.MyAppConfig'

一个答案似乎不再起作用,在首次请求时加载urls.py。

最近起作用的是将启动代码放入你的INSTALLED_APPS 初始化 .py 中的任何一个中,例如myapp/__init__.py

def startup():
    pass # load a big thing

startup()

使用./manage.py runserver...时,它将执行两次,但这是因为runserver具有一些技巧,可以首先验证模型等…常规部署,甚至在runserver自动重新加载时,也仅执行一次。

Go 2022/1/1 18:24:44 有332人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶