Django 启动时只执行一次代码?

2024-01-28

我正在编写一个 Django 中间件类,我只想在启动时执行一次,以初始化一些其他任意代码。我遵循了 sdolan 发布的非常好的解决方案here https://stackoverflow.com/questions/3495964/in-django-how-do-i-call-the-subcommand-syncdb-from-the-initialization-script,但是“Hello”消息输出到终端twice. E.g.

from django.core.exceptions import MiddlewareNotUsed
from django.conf import settings

class StartupMiddleware(object):
    def __init__(self):
        print "Hello world"
        raise MiddlewareNotUsed('Startup complete')

在我的 Django 设置文件中,我已经将类包含在MIDDLEWARE_CLASSES list.

但是当我使用 runserver 运行 Django 并请求页面时,我进入了终端

Django version 1.3, using settings 'config.server'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Hello world
[22/Jul/2011 15:54:36] "GET / HTTP/1.1" 200 698
Hello world
[22/Jul/2011 15:54:36] "GET /static/css/base.css HTTP/1.1" 200 0

你知道为什么“Hello world”被打印两次吗?谢谢。


更新:Django 1.7 现在有挂钩这个 https://docs.djangoproject.com/en/stable/ref/applications/#django.apps.AppConfig.ready

file: myapp/apps.py

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

file: myapp/__init__.py

default_app_config = 'myapp.apps.MyAppConfig'

对于 Django

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

最近有效的方法是将启动代码放入您的任何一个 INSTALLED_APPS 中init.py 例如myapp/__init__.py

def startup():
    pass # load a big thing

startup()

使用时./manage.py runserver...这会执行两次,但这是因为 runserver 有一些技巧来首先验证模型等...正常部署,甚至当 runserver 自动重新加载时,这只会执行一次。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 启动时只执行一次代码? 的相关文章

随机推荐

  • deepcopy() 非常慢

    我在 Python 中有一个包含大约 1000 个对象 行星系统 恒星 行星 的游戏状态 我需要复制它并在需要时对其应用一堆转换 然而 在大约 1 个请求 秒的情况下 这是占用了我24 63 的运行时间 https i stack imgu
  • 如何列出属于某个VPC的所有资源?

    在我的 AWS 账户中 我的 VPC 很少 我正在尝试找到一种方法来列出位于某个 VPC 下的所有资源 谢谢 您可以通过三种方式完成此操作 AWS CLI AWS 控制台或代码 AWS CLI 您可以使用 AWS CLI 列出与 VPC 关
  • Slim 基本身份验证

    今天是个好日子 我这里有一个有效的精简代码slim basic auth https packagist org packages tuupola slim basic auth当我进入受限目录时 会显示以下内容 一切正常 但我想做的是将其
  • 使用 SqlDataReader 和字符串数组

    我想使用数据读取器读取记录并将结果发送到数组字符串 我使用存储过程从 2 个表中选择数据 string ReqID string ConnectionString ConfigurationManager ConnectionStrings
  • Extjs如何让滚动条出现?

    我需要在表单比包含容器更宽时立即显示滚动条 我在容器上设置了属性 autoScroll true 但它不起作用 有办法得到我需要的结果吗 这是工作示例 http jsfiddle net mQC3B 2 http jsfiddle net
  • 提高 SQL Server 中的 Xquery 性能

    我有一个 Azure SQL 数据库 其中有 1 个表和大量记录 超过 75 000 条 该表包含 XML 数据类型的列 此列如下所示
  • 如何使用maven使用PrimeFaces-5.2.X的jar?

    这个问题看起来很简单 但是根据我的研究 maven 存储库http repo maven apache org maven2 org primefaces primefaces http repo maven apache org mave
  • 为什么测试“NaN == NaN”对于从 pandas 数据帧中删除不起作用?

    请解释如何在 pandas 中处理 NaN 因为以下逻辑对我来说似乎 损坏 我尝试了各种方法 如下所示 来删除空值 我的数据框 我使用它从 CSV 文件加载read csv 有一个列comments 大部分时间都是空的 专栏marked r
  • Elasticsearch 的最大滚动时间

    滚动搜索可以设置的最大滚动时间是多少 文档 https www elastic co guide en elasticsearch client javascript api current api reference html api s
  • Qt 同时使用多种字体

    我想在我的软件中使用三种字体 FontA 包含拉丁文 希腊文 西里尔文字符 FontB 包含韩文字符 FontC 包含日文 汉字 这些字体没有重叠 我想设置我的应用程序 以便立即使用所有这些字体 因为来自不同语言的字符可能会出现在我的软件中
  • 解析数字 ifconfig 标志

    ifconfig 命令输出其以文本和数字格式 虽然我可以找到参考对于数字标志 我找不到任何有关如何解释 屏蔽 数字的指示 qfe2 flags 1100843
  • 线程1:EXC_BAD_ACCESS(代码=1地址=0x0)

    我正在尝试创建一个简单的洗牌和发牌模拟器 我使用一个向量来表示一副 52 张牌 每张牌都由结构表示BitCard其元素的空间是内存 受到位域的限制 但是当构造函数尝试访问向量时 xCode 会抛出一个BAD ACCESS exception
  • 错误:类型“_InternalLinkedHashMap ”不是类型转换中“List ”类型的子类型

    我是 Flutter 新手 我尝试从 10 0 2 2 8000 api members 上的 api 获取数据 但收到错误 例如类型列表动态不是类型 列表 的子类型 我正在遵循颤动的示例 https flutter dev docs co
  • 在数据库中存储用户变量与在asp.net中存储会话

    我正在使用一个 ASP NET 应用程序 该应用程序将大部分数据存储在数据库中而不是会话中 我想知道每种方法的优缺点以及哪种方法更好 例如 您有一个非常繁忙的站点 而不是在会话中存储用户特定变量 而是有一个称为用户数据的数据库表 它可以存储
  • 如何传递参数并将 stdin 从文件重定向到在 gdb 中运行的程序?

    我通常运行一个程序 a out arg1 arg2
  • 实体框架可以处理存储过程中的多个结果集(每个结果集来自连接表)吗?

    在 Linq to SQL 中 我找不到一种简单的方法来处理存储过程返回的多个结果集 其中每个结果集都来自表连接 每个结果集并不直接映射到表 无法改变这种行为 目前看来 使用 DataSet 似乎要简单得多 当前的实体框架或即将推出的实体框
  • 密封案例类是一个好习惯吗?

    密封类的主要原因似乎是 这允许编译器在这些类上进行模式匹配时进行穷举搜索 假设我有用于模式匹配的数据类型 玩具示例 sealed trait Statement case class Assign name String value Int
  • withFormik,将函数作为 props 传递

    我正在使用 Formik 构建用户输入表单 我正在使用 withFormik 来处理我的表单 我目前正在我的组件中传递我的handleSubmit 如下所示 export const CreateForm withFormik mapPro
  • 使用请求范围的 bean 函数作为 JSF 中临时呈现按钮的操作

    我在 JSF 中遇到以下基本 也许是愚蠢的 理解问题 有一个 JSF 页面 testPage xhtml
  • Django 启动时只执行一次代码?

    我正在编写一个 Django 中间件类 我只想在启动时执行一次 以初始化一些其他任意代码 我遵循了 sdolan 发布的非常好的解决方案here https stackoverflow com questions 3495964 in dj