python flask调度:所有工作人员都启动调度程序任务

时间:2019-03-28 20:54:41

标签: python flask apscheduler

我在烧瓶应用程序中使用计划的任务:

    import time
    import atexit

    from apscheduler.schedulers.background import BackgroundScheduler


    def intervall():
        with app.app_context():
            call_function_to_do()

    scheduler = BackgroundScheduler()
    scheduler.add_job(func=intervall, trigger="interval", seconds=5)
    scheduler.start()

    # Shut down the scheduler when exiting the app
    atexit.register(lambda: scheduler.shutdown())

我的问题是所有枪械工人都在开始调度任务。在这种情况下,请检查超时情况并向用户发送电子邮件。

有人知道如何只让一名工人来call_function_to_do()吗?

1 个答案:

答案 0 :(得分:0)

基本上有两种选择。 FAQ中概述的其中一项功能是将调度程序分为单独的进程,并使用某种远程访问协议(例如,使用RPyC)与该进程进行通信。另一种方法是在Flask应用中启动调度程序,但要确保仅运行一个这样的实例。您可以使用某种锁定机制,例如RedLock