Flask 应用程序启动后运行代码

2023-11-26

我的目标是在 Flask 应用程序启动后运行任意代码。这是我所得到的:

def run():
    from webapp import app
    app.run(debug=True, use_reloader=False)

理想情况下我能够这样做:

def run():
    from webapp import app
    app.run(debug=True, use_reloader=False)
    some_code()

但代码不会继续过去app.run(),所以 some_code() 永远不会运行。

我目前正在研究的解决方案是在 app.run() 的单独线程中运行 some_code(),创建一个在第一次请求之前设置这个的函数:

app.is_running = True

然后使用 some_code() 向应用程序发出基本请求,以便运行“第一个请求之前”代码。这是相当复杂的并且很难记录。我宁愿使用 Flask 中已经提供的 app.is_running 参数,或者使用@app.after_server_start装饰器,但据我所知,这些都不存在。

帮我改进这段代码?


遗言:每次想到这个问题,我都希望@app.after_server_start装饰器存在。


如果您需要在 Flask 应用程序启动后但严格在第一个请求之前执行一些代码,甚至不是由 @app.before_first_request 可以处理的第一个请求的执行触发,您应该使用 Flask_Script,正如 CESCO 所说,但是您可以子类化 Server 类并覆盖 __ call __ 方法,而不是使用 @manager.command 覆盖 runserver 命令:

from flask import Flask
from flask_script import Manager, Server

def custom_call():
    #Your code
    pass

class CustomServer(Server):
    def __call__(self, app, *args, **kwargs):
        custom_call()
        #Hint: Here you could manipulate app
        return Server.__call__(self, app, *args, **kwargs)

app = Flask(__name__)
manager = Manager(app)

# Remeber to add the command to your Manager instance
manager.add_command('runserver', CustomServer())

if __name__ == "__main__":
    manager.run()

这样您就不会覆盖 runserver 命令的默认选项。

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

Flask 应用程序启动后运行代码 的相关文章

  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • Python 函数可以从作用域之外赋予新属性吗?

    我不知道你可以这样做 def tom print tom s locals locals def dick z print z name z name z guest Harry print z guest z guest print di
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • 如何使用Python创建历史时间线

    So I ve seen a few answers on here that helped a bit but my dataset is larger than the ones that have been answered prev
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class

随机推荐

  • 将两个音频缓冲区叠加到一个缓冲区源中

    尝试将两个缓冲区合并为一个 我已经能够从音频文件创建两个缓冲区并加载和播放它们 现在我需要将两个缓冲区合并为一个缓冲区 他们怎样才能合并 context new webkitAudioContext bufferLoader new Buf
  • session_regenerate_id() 与 session_id(randomString)

    之间有什么明显的区别session id randomString and session regenerate id 两者似乎都改变了会话ID session regenerate id 将用新的会话 ID 替换当前的会话 ID 并保留当
  • 如何配置 IIS 来处理非常大的文件上传?

    平台 IIS 6 ASP Net 2 0 Net 3 5 Server 2003 我正在构建一个应用程序 它接受用户的文件 处理它们并返回结果 该文件使用 HTTP POST 上传到 ASP Net Web 表单 该应用程序需要一些大文件
  • PHP 没有看到 mysql 扩展

    我不知所措 我使用的是 WIndows 7 并且安装了 Apache 2 2 21 和 PHP 5 2 17 我无法启用 mysql 模块 Windows 7 上是否存在已知问题 我运行 php info 并看到以下内容 C php gt
  • System.DirectoryServices - 服务器无法运行

    我在使用 Windows 身份验证的网站上收到错误消息 奇怪的东西 仅当用户尚未保存到数据库中时才会发生 新的未知用户 仅出现在实时系统上 本地开发环境一切正常 这是我在日志邮件中收到的内容 来源 System DirectoryServi
  • 具有 lld、ld 和 d 类型标识符的 size_t 变量的 printf

    我写了这个小代码 include
  • 使用 conda install 安装 Keras 包

    我已经安装了Anaconda作为用户帐户在服务器上打包 然后我安装keras by conda install keras 但是安装后 当我运行时import keras 它提出了no module names keras 任何人都可以帮忙
  • 如何发送带有“DELETE”HTTP 动词的请求?

    我想在 Rails 应用程序的视图中创建一个链接来执行此操作 DELETE sessions 我该怎么做呢 增加了复杂性 会话 资源没有模型 因为它代表用户登录会话 CREATE表示用户登录 DESTROY意味着注销 这就是 URI 中没有
  • 当前和未来元素的事件侦听器,无需 jQuery [重复]

    这个问题在这里已经有答案了 如果我没记错的话 我曾经看到一种将事件侦听器绑定到匹配特定条件的每个元素 可能是查询选择器 的方法 再次寻找它 除了高度依赖 jQuery 的人之外 我找不到任何东西 但我更喜欢一种真正简单的方法来实现这一点 有
  • 如何创建 SOAP UI 项目并在 Java 中运行对其的请求

    我想创建一个 Java 类来执行以下操作1 使用 wsdl 加载 创建 SOAPUI 项目 2 运行对该 wsdl 中的操作的请求 这是我的 SoapJavaTest java 文件 虽然这并不完整 它只是在 SOAP UI 中注册一个项目
  • PHP xlsx 标头

    所以这有效 myphpfile php 此处调用该 php 文件 并且 PDF 下载工作正常 a class oglasavanje href cjenik myphpfile php download a br 但这不起作用
  • Visual Studio 2012实现界面的快捷方式

    Visual Studio 2012 似乎删除了从接口继承的抽象类的自动实现 知道如何在 2012 版本中解决这个问题吗 看来还是有可能的 请看这个来自 MSDN 的 如何 文章 我测试了它 它似乎工作得很好 使用此过程执行实现抽象基类 智
  • 类设计:数组与多个变量

    我有一些理论问题 但是这是我在设计类时有时会遇到的问题 并且在阅读其他代码时我发现它的做法有所不同 以下哪一项更好以及为什么 示例1 class Color public Color float float float Color frie
  • 高性能异步等待套接字

    我正在编写一个应用程序 需要通过 tcp 建立数百个套接字连接来读取 写入数据 我遇到过这段代码片段在这里我想知道如何才能使其更加稳健 这就是我当前调用代码的方式 foreach var ip in listofIps IPEndPoint
  • 防止软键盘被关闭

    有很多与如何以编程方式显示 隐藏软键盘相关的问题 然而 众所周知 android 后退按钮会导致键盘消失 有没有办法阻止用户通过按后退按钮来关闭键盘 我尝试捕获后退按钮 但是当键盘显示在我的活动中的 onKeyDown 时 按下后退键并且软
  • 将 pandas 数据框中的对象列转换为日期时间

    我在 pandas 数据框中有一个格式为 dd mm yyyy 的对象列 我想用 to datetime 进行转换 我尝试使用以下命令将其转换为日期时间 df Time stamp pd to datetime df Time stamp
  • Xcode - 目标特定本地化

    我的项目包括多个目标 每个目标用于不同的客户 有些客户需要特定的本地化 我不希望所有客户都获得这种特定的本地化 由于本地化是在项目级别处理的 因此我找不到仅针对特定目标添加本地化的方法 有什么建议如何去做吗 寻找稳定的选项 无需在每次构建之
  • 多次查询同一个表但在不同的列中mysql

    我正在尝试获取更多列来总结两个不同表的结果 SET start res 20150301 SET finish res 20150501 SET finish check 20150801 SET start check 20150301
  • 转储 g++ 中的包含路径

    我正在尝试编写一些构建脚本 并想确定包含的内容是否是系统包含的 所以我想要g 告诉我它正在使用的包含路径 cpp v似乎是明显的最佳选择 但它没有给我 C 路径 所以我尝试 g Xpreprocessor v 这不太正确 g 捕捉到 v因为
  • Flask 应用程序启动后运行代码

    我的目标是在 Flask 应用程序启动后运行任意代码 这是我所得到的 def run from webapp import app app run debug True use reloader False 理想情况下我能够这样做 def