【问题标题】:How to to run a function every 12 hours inside a flask app?如何在烧瓶应用程序中每 12 小时运行一次函数?
【发布时间】:2021-12-03 13:25:40
【问题描述】:

我一直在创建一个使用 ML 来预测一些输出的 API,我需要每 1 分钟更新一次数据集(获取新数据)并每 12 小时重新训练一次数据集,我正在使用多处理来实现这一点,我的应用程序部署在 4 GB 专用服务器上。

我正在为烧瓶应用程序的网络服务器使用 LSTM 模型和 Nginx/gunicorn。

这是我如何调用这两个函数的代码 sn-p:

def fetch():
    while True:
        #fetching done
        
        time.sleep(60) #runs every 60 minutes

def retrain():
    while True:
        #training of LSTM model

        time.sleep(43200) #runs every 12 hours

multiprocessing.Process(target=fetch).start()
multiprocessing.Process(target=retrain).start()

if __name__ == '__main__':
    multiprocessing.Process(target=fetch).start()
    multiprocessing.Process(target=retrain).start()
    app.run(debug=False, host='0.0.0.0')

我面临的问题是 CPU 使用率,我的 CPU 使用率高达 190%,我的数据集的最大长度是 100k,我想知道应该有更好的方法吗?

谢谢

【问题讨论】:

  • 我会使用系统的任务管理器来运行它。在 Linux 上,我会使用程序 cron 每 1 分钟运行一次脚本,每 12 小时运行一次其他脚本。然后脚本不必一直运行。

标签: python multithreading flask flask-sqlalchemy


【解决方案1】:

您可以使用Celery 定期运行任务,继续使用multiprocessing 会增加代码的复杂性。开发、维护和调试将变得困难千倍。

看看下面的链接:

https://docs.celeryproject.org/en/stable/getting-started/introduction.html

https://rudra.dev/posts/setting-up-a-task-scheduler-in-flask

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-05
    • 2018-10-25
    • 2019-11-13
    • 2021-12-22
    • 2018-09-27
    • 2018-12-13
    • 1970-01-01
    • 2020-04-16
    相关资源
    最近更新 更多