title: Celery Task Priority
body: <p>I want to manage tasks using Celery. I want to have a single task queue (with concurrency 1) and be able to push tasks onto the queue with different priorities such that higher priority tasks will preempt the others.</p>
  
  <p>I am adding three tasks to a queue like so:</p>
  
  <p><strong>add_tasks.py</strong></p>
  
  <pre><code>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)
  </code></pre>
  
  <p>I have the following configuration:</p>
  
  <p><strong>tasks.py</strong></p>
  
  <pre><code>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
  </code></pre>
  
  <p>I expect the second task I added to run before the third, because it has higher priority but it doesn't. They run in the order added.</p>
  
  <p>I am following the docs and thought I had configured the app correctly.</p>
  
  <p>Am I doing something wrong or am I misunderstanding the priority feature? </p>