烧瓶中写入数据库的后台任务

Posted

技术标签:

【中文标题】烧瓶中写入数据库的后台任务【英文标题】:Background task in flask that write to database 【发布时间】:2022-01-16 22:40:26 【问题描述】:

我想构建一个烧瓶应用程序,从某个电子邮件地址读取电子邮件在路线上显示这些电子邮件。在这里,我想要一个 后台任务 来获取所有电子邮件并将它们写入数据库,并且我希望它在后台连续运行我不想运行它有人请求路线时的任务。 获取电子邮件并显示它们应该完全独立。我认为多处理应该可以工作,但我不知道如何启动两个单独的进程,一个用于获取电子邮件并将其写入数据库,另一个用于显示来自数据库的电子邮件的烧瓶应用程序是否可以这样做? 请帮我给我一个多处理的演示,其中一个进程在后台运行并写入数据库,另一个是烧瓶应用程序该示例可以是任何不需要获取电子邮件的示例任何在单独进程上写入数据库并在另一个进程上从同一数据库读取的烧瓶

感谢您阅读本文。 非常感谢。

【问题讨论】:

【参考方案1】:

最近遇到这个问题,最好的做法是https://apscheduler.readthedocs.io/en/3.x/index.html

您可以创建调度程序以在任何时间间隔运行任何功能或使用 crontab 表示法。只需确保在您的 app.run() 之前创建调度程序

例如

def print_hello():
    print("hello")

scheduler = BackgroundScheduler() # Create Scheduler
retrain_scheduler.add_job(print_hello, "interval", seconds = 5) # Add job to scheduler
retrain_scheduler.start() # Start Scheduler
app.run()

这将每 5 秒运行一次函数。

【讨论】:

以上是关于烧瓶中写入数据库的后台任务的主要内容,如果未能解决你的问题,请参考以下文章

烧瓶(uwsgi)应用程序上的守护进程后台任务

如何在后台任务中访问redis连接

使用应用程序时颤动后台任务

后台工作人员行为怪异?

如果前台应用程序终止,如何通知后台任务?

Win10后台任务的文件权限