如何防止芹菜任务运行两次?

问题描述

我正在运行带有celery的Django应用程序,以运行应该每天运行一次的定期任务,但是问题是它每天运行两次。

我的任务继承自PeriodicTask类,并使用以下属性每天运行一次:

run_every = crontab(小时= 1,分钟= 1)

我们有两个队列:

  • slow_queue
  • fast_queue

在我的CELERY_ROUTES变量中,我没有将任务分配给队列。

我们还定义了两个芹菜工人,如图所示。两者都明确提到了slow_queue。

我是否需要使用CELERY_ROUTES变量将我的任务显式路由到队列,以防止其执行两次?

芹菜工人: 图片:$ {REGISTRY} / random-django-project:$ {TAGNAME}

command: celery worker -A config.celery_config -l ${LOGLEVEL} -X slow_queue --hostname=worker@%h -O fair --autoscale=12,4
privileged: true
env_file: env.${ENVIRONMENT}
restart: unless-stopped
labels:
  tier: backend
  io.rancher.scheduler.affinity:host_label: tier=backend
  io.rancher.container.pull_image: always

celeryworker-slow: 图片:$ {REGISTRY} / random-django-project:$ {TAGNAME}

command: celery worker -A config.celery_config -l ${LOGLEVEL} -Q slow_queue --hostname=worker-slow@%h -O fair --autoscale=12,4
privileged: true
env_file: env.${ENVIRONMENT}
restart: unless-stopped
labels:
  tier: backend
  io.rancher.scheduler.affinity:host_label: tier=backend
  io.rancher.container.pull_image: always

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)