首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >芹菜每隔一段时间发送任务,但只接收和执行每隔一段时间。

芹菜每隔一段时间发送任务,但只接收和执行每隔一段时间。
EN

Stack Overflow用户
提问于 2016-11-24 21:07:30
回答 1查看 270关注 0票数 0

我把时间设定为1分钟。芹菜按预期每分钟发送任务,但每隔一分钟只接收和执行一次任务。

代码语言:javascript
复制
[2016-11-24 15:47:48,653: INFO/MainProcess] mingle: searching for neighbors
[2016-11-24 15:47:49,669: INFO/MainProcess] mingle: sync with 1 nodes
[2016-11-24 15:47:49,670: INFO/MainProcess] mingle: sync complete
[2016-11-24 15:47:49,691: WARNING/MainProcess] celery@testTask ready.
[2016-11-24 15:48:00,011: INFO/Beat] Scheduler: Sending due task every-minute (tasks.download_reports)
[2016-11-24 15:49:00,053: INFO/Beat] Scheduler: Sending due task every-minute (tasks.download_reports)
[2016-11-24 15:49:00,057: INFO/MainProcess] Received task: tasks.download_reports[a927e0a5-8c45-4a2b-b05f-ab1e19156ada]
[2016-11-24 15:49:00,061: WARNING/Worker-17] this is a task
[2016-11-24 15:49:00,115: INFO/MainProcess] Task tasks.download_reports[a927e0a5-8c45-4a2b-b05f-ab1e19156ada] succeeded in 0.0551409143955s: None
[2016-11-24 15:50:00,053: INFO/Beat] Scheduler: Sending due task every-minute (tasks.download_reports)
[2016-11-24 15:51:00,076: INFO/Beat] Scheduler: Sending due task every-minute (tasks.download_reports)
[2016-11-24 15:51:00,079: INFO/MainProcess] Received task: tasks.download_reports[0015bc12-4452-486e-98b8-b8b61f1eb56c]
[2016-11-24 15:51:00,081: WARNING/Worker-10] this is a task
[2016-11-24 15:51:00,127: INFO/MainProcess] Task tasks.download_reports[0015bc12-4452-486e-98b8-b8b61f1eb56c] succeeded in 0.0465096402913s: None
... ...

下面是我的celeryconfig文件:

代码语言:javascript
复制
# CELERY
BROKER_URL = 'amqp://guest@localhost//'
CELERY_RESULT_BACKEND = 'amqp'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'US/Eastern'

from celery.schedules import crontab

CELERYBEAT_SCHEDULE = {
    'every-minute': {
        'task': 'tasks.download_reports',
        'schedule': crontab(minute='*/1'),
        'args': (),
    },
}

以下是任务文件:

代码语言:javascript
复制
from celery import Celery
celery = Celery('tasks')
celery.config_from_object('celeryconfig')

@celery.task
def download_reports():
  print 'this is a task'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-30 19:41:09

我发现问题是我同时经营两个芹菜工人。因此,我在消息队列中失去了50%的工作。

我用一个芹菜工人来执行两项任务来解决这个问题。

celeryconfig文件:

代码语言:javascript
复制
CELERYBEAT_SCHEDULE = {
    'every-minute': {
        'task': 'tasks.download_reports',
        'schedule': crontab(minute='*/1'),
        'args': (),
    },
    'every-5-minute': {
        'task': 'tasks.download_another_report',
        'schedule': crontab(minute='*/5'),
        'args': (),         
    }
}

任务文件

代码语言:javascript
复制
@celery.task
def download_reports():
  print 'this is a task'

@celery.task
def download_another_report():
  print 'this is another task'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40794500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档