使用APScheduler在python中进行并行编程的最佳方法是什么?

2024-04-26 18:23:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用ApsScheduler在python中调度任务,这些任务需要独立运行,并且与其他任务同时运行

主要规则是这些任务必须在计划的确切时刻执行,不能因为其他任务而被阻止或延迟执行

任务由我的应用程序的用户动态安排

为此,当任务执行时间到达时,我启动一个新的子流程来执行它:

def _initialize_order_process(user, order):
    p = Process(target=do_scheduled_order, args=(user, order))
    p.start()
    p.join()

知道每个子进程启动与服务器的连接是很重要的

我的TAK计划如下:

scheduler.add_job(_initialize_order_process, 'date', run_date=start_time, args=[user, order], id=job_id)

我的问题是,由于进程的数量,在同一时间安排了大量任务时,服务器崩溃

所以,我需要这个应用程序是可扩展的,以支持许多用户

有人知道如何为我的用例创建可伸缩的解决方案吗


Tags: 用户服务器id应用程序date进程argsjob
1条回答
网友
1楼 · 发布于 2024-04-26 18:23:09

一种解决方案是横向添加更多硬件(获得更多服务器)

例如,您可以使用Redis将请求添加到任务队列,然后使用芹菜工人委派任务,并运行许多并行应用程序来处理工作负载

另一个解决方案是为Apache Airflow设置一个集群,然后通过它运行任务

cannot be blocked or delay execution because of another task

不幸的是,任务调度不是这样工作的。最终,您将拥有相互依赖的工作,因此您必须拥有大量的工作流程

相关问题 更多 >