APScheduler在gunicorn工作进程的数量上多次运行的问题
创始人
2024-09-11 20:00:36
0

在使用gunicorn部署应用时,如果使用APScheduler调度任务,可能会出现调度器在gunicorn工作进程的数量上多次运行的问题。这是因为每个工作进程都会独立启动一个APScheduler对象,导致任务被重复执行。

解决这个问题的方法是将APScheduler对象的运行放在主进程中,然后将任务通过消息传递机制发送给子进程执行。这样可以避免重复运行APScheduler对象。

下面是一个示例代码,展示如何使用gunicorn和APScheduler同时部署应用,并避免重复运行APScheduler对象。

from apscheduler.schedulers.background import BackgroundScheduler
import multiprocessing as mp 
import os 

def my_job():
    print('hello world')

# use multiprocessing to spawn multiple workers
workers = int(os.environ.get('GUNICORN_WORKERS', 1))

if workers > 1:
    # create a queue for task messages
    task_queue = mp.Queue()

    # create a scheduler in the main process
    sched = BackgroundScheduler()
    sched.start()

    # add a job to the scheduler
    sched.add_job(my_job, 'interval', minutes=5)

    # send task message to child processes
    for i in range(workers):
        task_queue.put('start')

    # create child processes
    def worker(task_queue):
        sched = BackgroundScheduler()
        sched.start()
        while True:
            # wait for task message
            task = task_queue.get()
            if task == 'start':
                # add job to child scheduler
                sched.add_job(my_job, 'interval', minutes=5)

    processes = []
    for i in range(workers):
        p = mp.Process(target=worker, args=(task_queue,))
        processes.append(p)
        p.start()

    # wait for child processes to finish
    for p in processes:
        p.join()
else:
    # create a scheduler in the main process
    sched = BackgroundScheduler()
    sched.start()

    # add a job to the scheduler
    sched.add_job

相关内容

热门资讯

透视规律!wpk透视表,hhp... 透视规律!wpk透视表,hhpoker德州挂真的有吗,玩家教程(一贯存在有挂);玩家必备必赢加哟《1...
透视工具!德普之星透视辅助软件... 【福星临门,好运相随】;透视工具!德普之星透视辅助软件,哈糖大菠萝怎么挂,2025版教程(原来真的有...
透视玄学!wepoekr底牌透... 透视玄学!wepoekr底牌透视,德普之星透视辅助软件,必备科技(有挂攻略)1、玩家可以在德普之星透...
透视有挂!wpk辅助插件,hh... 《透视有挂!wpk辅助插件,hh poker辅助有用吗,必赢方法(从来有挂)》 wpk辅助插件软件透...
透视ai!德普之星透视辅助,w... 您好,德普之星透视辅助这款游戏可以开挂的,确实是有挂的,需要了解加Q群【1067239143】很多玩...
透视私人局!wepoker透视... 透视私人局!wepoker透视脚本,werplan怎么透视,揭秘教程(切实真的是有挂)1、完成wep...
透视智能ai!aapoker透... 透视智能ai!aapoker透视插件,智星菠萝可以辅助吗,推荐一款(有挂教程)1、在智星菠萝可以辅助...
透视智能ai!wpk脚本下载,... 1、透视智能ai!wpk脚本下载,智星德州插件2024最新版,2025新版教程(其实是真的有挂);详...
透视讲解!wepoker透视脚... 透视讲解!wepoker透视脚本下载,红龙poker有辅助吗,一分钟了解(有挂技巧)1、玩家可以在w...
透视玄学!德普之星辅助功能如何... 这是一款非常优秀的德普之星辅助功能如何设置 ia辅助检测软件,能够让你了解到德普之星辅助功能如何设置...