6
我想用芹菜管理任務。我想要一個任務隊列(併發1),並且能夠將任務推送到具有不同優先級的隊列中,以便更高優先級的任務將搶佔其他任務。芹菜任務優先級
我加入三個任務到一個隊列,像這樣:
add_tasks.py
from tasks import example_task
example_task.apply_async((1), priority=1)
example_task.apply_async((2), priority=3)
example_task.apply_async((3), priority=2)
我有以下配置:
tasks.py
from __future__ import absolute_import, unicode_literals
from celery import Celery
from kombu import Queue, Exchange
import time
app = Celery('tasks', backend='rpc://', broker='pyamqp://')
app.conf.task_queues = [Queue('celery', Exchange('celery'), routing_key='celery', queue_arguments={'x-max-priority': 10})]
@app.task
def example_task(task_num):
time.sleep(3)
print('Started {}'.format(task_num)
return True
我期望我添加的第二個任務在第三個任務之前運行,因爲它具有更高的優先級,但它沒有。他們按照添加的順序運行。
我正在關注文檔,並認爲我正確配置了應用程序。
我做錯了什麼或者我誤解了優先級功能?
感謝您的回答。我下載了你的項目並按照你所描述的設置完全按照記錄運行它,但仍然沒有看到優先行爲的工作。 – EngineerCamp
@EngineerCamp我再次克隆後重新檢查,它似乎工作正常。 有一個小預覽視頻[這裏](https://www.youtube.com/watch?v=nQXO2kjGV9M&feature=youtu.be)只有一個芹菜工人,這樣就很容易觀察排序的任務。 在視頻開始時(_視頻轉碼爲360p_時),**觀察720p如何在點擊480p和720p時獲得更高優先級,即使首先點擊480p時也是如此。 –
我又給了它,但仍然沒有運氣。我正在使用Python 3,並在Ubuntu 14.04上,所以也許有一些差異。 – EngineerCamp