Celery,就是要给你完美体验之celery快速入门(二)

一.项目中使用celery    

    我的项目目录:

    TestCelery/ ├── proj │ ├── celeryconfig.py │ ├── celery.py │ ├── init.py │ └── tasks.py └── test.py

 celery.py内容如下:

from celery import Celery

# 创建celery实例
app = Celery('demo')
app.config_from_object('proj.celeryconfig')

# 自动搜索任务
app.autodiscover_tasks(['proj'])

 celeryconfig.p模块内容如下:

from kombu import Exchange, Queue
BROKER_URL = 'redis://:332572@127.0.0.1:6379/1'
CELERY_RESULT_BACKEND = 'redis://:332572@127.0.0.1:6379/2'

 tasks.py模块内容如下:

from proj.celery import app as celery_app

# 创建任务函数
@celery_app.task
def my_task1():
    print("任务函数(my_task1)正在执行....")

@celery_app.task
def my_task2():
    print("任务函数(my_task2)正在执行....")

@celery_app.task
def my_task3():
    print("任务函数(my_task3)正在执行....")

 启动worker:

celery -A proj worker -l info

   键入ctrl+c可关闭worker. 

二.调用任务(Calling Task) 

    调用任务,可使用delay()方法:

my_task.delay(2, 2)

 也可以使用apply_async()方法,该方法可让我们设置一些任务执行的参数,例如,任务多久之后才执行,任务被发送到那个队列中等等.

my_task.apply_async((2, 2), queue='my_queue', countdown=10)

任务my_task将会被发送到my_queue队列中,并且在发送10秒之后执行。

 如果我们直接执行任务函数,将会直接执行此函数在当前进程中,并不会向broker发送任何消息。

 无论是delay()还是apply_async()方式都会返回AsyncResult对象,方便跟踪任务执行状态,但需要我们配置result_backend.

 每一个被吊用的任务都会被分配一个ID,我们叫Task ID.

注:欢迎各路码友激情评论,指出不足,完善知识体系!同时,浏览此文章的人,我想对你说,你是最棒的,不带们。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值