【问题标题】:Scheduled job from Flask application来自 Flask 应用程序的计划作业
【发布时间】:2019-08-16 02:23:24
【问题描述】:

我希望对计划任务流程以及为什么建议将 Celery 之类的东西用于 Flask 有一个基本的了解。

我的情况是一个基于网络的工具,它根据用户输入生成电子表格。我将这些电子表格保存到一个临时目录,当用户单击“下载”按钮时,我使用 Flask 的“send_from_directory”函数将文件作为附件提供。我需要每 15 分钟左右运行一次后台服务,以清除所有超过 15 分钟的文件的临时目录。

我最初的计划是在 while(True) 循环中运行一个基本的 Python 脚本,但我做了一些研究以找出人们通常会做什么,并且一切都推荐 Celery 或其他任务管理器。我研究了Celery,发现我也需要了解redis,而且我显然需要在unix环境中托管redis。对于每 15 分钟删除文件的脚本来说,这很麻烦。

我正在使用内置开发服务器在 Windows 中本地开发我的 Flask 应用程序,并使用 IIS 部署到公司 Intranet 上的虚拟机。我边走边学,所以请解释为什么需要这么多机器来定期调用简单删除内容的脚本。这似乎是一个巨大的过度复杂化,但正如我所说,我正在努力学习,所以我想正确地做/学习它。

谢谢!

【问题讨论】:

    标签: python flask redis celery scheduled-tasks


    【解决方案1】:

    你不会为此使用 Celery 或 redis。一个 cron 作业将是非常合适的。

    Celery 用于需要异步运行但响应主服务器进程中的事件的作业。例如,如果一个注册表单需要发送电子邮件通知,那将通过 Celery 安排和运行,以免阻塞主 Web 响应。

    【讨论】:

    • 由于我正在部署到 Windows 环境,Cron 作业的替代方案是 Windows 调度程序,还是我在后台运行的简单“while(True)”脚本就足够了?我想我不明白为什么需要单独的机器,例如 Cron 或 Windows 调度程序。
    • 但是什么会运行 while 循环呢?当您的服务器启动时会启动它,或者如果它死了重新启动它?无论如何,计划任务都不是独立的机器,它们是内置在您的操作系统中的。
    猜你喜欢
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多