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