我正在使用芹菜和sqs处理后台任务。 我们有多个正在运行的任务,我想为不同的任务设置不同的visible_timeout;是否可以在settings.py文件中执行此操作。 当前settings.py文件是
BROKER_TRANSPORT_OPTIONS = {
'region': 'ap-southeast-1',
'polling_interval': 10,
'queue_name_prefix': 'dev-',
'visibility_timeout': 43200,
}
答案 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')