如何为celery-sqs中的不同队列设置不同的visible_timeout

时间:2018-07-19 08:34:40

标签: celery amazon-sqs django-celery

我正在使用芹菜和sqs处理后台任务。 我们有多个正在运行的任务,我想为不同的任务设置不同的visible_timeout;是否可以在settings.py文件中执行此操作。 当前settings.py文件是

BROKER_TRANSPORT_OPTIONS = {
    'region': 'ap-southeast-1',
    'polling_interval': 10,
    'queue_name_prefix': 'dev-',
    'visibility_timeout': 43200,
}

1 个答案:

答案 0 :(得分:0)

这应该可以通过几种不同的方式实现。我相信您可以为案件做的最直接的事情是利用Celery的task routing功能。配置可能看起来像这样

app.conf.task_routes = ([
    ('feed.tasks.*', {'queue': 'feeds'}),
    ('web.tasks.*', {'queue': 'web'}),
    (re.compile(r'(video|image)\.tasks\..*'), {'queue': 'media'}),
],)

另请参阅:message routing

或者,您也可以“即时”路由任务,发送任务时会一时兴起地覆盖queue / routing_key的应用程序默认设置。例如...

>>> from feeds.tasks import import_feed
>>> import_feed.apply_async(args=['http://cnn.com/rss'],
...                         queue='feed_tasks',
...                         routing_key='feed.import')