Dramatiq 多次执行一个任务

时间:2021-06-10 21:15:09

标签: django queue apscheduler multiprocess dramatiq

我目前正在 >>> df.groupby(["Election Year", "Region"]) \ .apply(lambda x: x.loc[x["Votes"].idxmax(), "Party"]) \ .unstack().mode(axis="columns") \ .rename(columns={0: "Party"}).reset_index() Election Year Party 0 2000 B 1 2005 A 上运行一个 8 核实例(docker_serivce、dramaticiq_service、rabbitmq_service、postgres_service 等): docker-compose django_apscheduler==0.5.2 dramatiq [rabbitmq, watch]==1.8.1

错误在于许多进程正在执行相同的任务。任务只创建一次(apscheduler RabbitMQ (rabbitmq: 3.8-management-alpine image)),但是有几个进程试图执行它,不同进程之间有些线程是相同的。

这是一个例子。作业在队列中一次,但是当它被执行时,许多进程都会接受它。 139698903181056是线程,21是进程

BackgroundScheduler

1 个答案:

答案 0 :(得分:0)

问题与Django-apscheduler有关。

dramatiq 容器(8 个 worker)启动时调度器暂停,但是在我的代码的一部分中,有一段代码可以恢复调度器,因此所有 8 个 worker 同时开始触发任务,导致即使作业只创建一次,也会重复执行任务。

道德:始终检查您的调度程序是否只启动一次。