如何在芹菜中推送和弹出队列的任务

时间:2018-10-07 14:40:59

标签: django python-3.x celery

我想将大量图像保存到图像服务器。我需要将所有图像信息请求排队以使用Celery保存它们。我使用Django框架。 我阅读了Celery的文档,并在Django中对其进行了配置,并且还创建了一个名为“ images”的队列,但是我不知道如何将图像信息放入该队列并发送消息以将其保存并从中删除。保存后排队。 我在Celery文档的队列中找不到任何用于推送和弹出任务的命令。

这是我配置芹菜的代码:

from kombu import Exchange, Queue
from celery import Celery
import os

class CeleryQueue:

   def celery_queue(self):

       os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'DataScience.settings')
       app = Celery('images', broker='amqp://localhost')
       app.config_from_object('django.conf:settings', namespace='CELERY')
       app.autodiscover_tasks()
       image_exchange = Exchange('media', type='direct')
       app.conf.task_default_queue = 'images'
       app.conf.task_default_exchange_type = 'direct'
       app.conf.task_default_routing_key = 'media.image'
       app.conf.task_queues = (Queue('images', image_exchange,routing_key=app.conf.task_default_routing_key))

谢谢您的帮助

1 个答案:

答案 0 :(得分:0)

我认为您在阅读文档时感到困惑。队列用于存储任务。任务被编写为函数,并以@task修饰。因此,当您调用任务时,请使用task_name.delay(parameters)