我發現隊列信息可以通過current_task.request.delivery_info['exchange']
獲得。
因此,解決方案,我結束了使用如下:
def get_source_queue(default=None):
"""
Finds and returns the queue that the currently-executing task (if any) came from.
"""
from celery import current_task
if current_task is not None and 'exchange' in current_task.request.delivery_info:
source_queue = current_task.request.delivery_info['exchange']
if source_queue is not None:
return source_queue
return default
,然後我使用與子任務是這樣的:
my_task.apply_async(args=('my', 'args'), queue=get_source_queue(default='foo_queue'))
我不知道如果是這樣的最好的辦法做到這一點...也許有一些東西內置於芹菜,說「使用相同的隊列作爲源隊列」(?)但是,上述作品。
也相關:http://stackoverflow.com/questions/34123455/do-subtasks-inherit-the-queue-of-their-parent-task – Hudon