celery任务调度模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了celery任务调度模块相关的知识,希望对你有一定的参考价值。

Celery是Python开发的分布式任务调度模块,Celery本身不含消息服务,它使用第三方消息服务来传递任务,目前,Celery支持的消息服务有RabbitMQ、Redis甚至是数据库。

安装celery

pip install Celery

当使用redis时需要再安装celery-with-redis

celery的tasks脚本编写

例子:

import time

from celery import Celery

#指定redis的地址和库

broker='redis://localhost:6379/0'

backend='redis://localhost:6379/1'

#指定名字

celery = Celery('tasks', broker=broker, backend=backend)

@celery.task

def add(x, y):

    return x+y

def sendmail(mail):

    print('sending mail to %s...' % mail['to'])

    time.sleep(2.0)

    print('mail sent.')

启动task任务

#需要将task任务部署到linux服务器上,并将此任务运行,如果为运行此任务,则无法向redis传入值,也无法监控返回状态,执行命令如下

celery -A tasks worker -l info

调用celery接口

例子:

from celery_task import add,sendmail

import time

a = add.delay(10, 20)

print (a)

print (type(a))

time.sleep(1)

#查看celery返回的结果

print (a.result)

#查看celery的返回状态

print (a.status)

#指定超时时间为10秒

print (a.get(timeout=10))

#是否处理完成

print (a.ready())

#调用sendmail

sendmail.delay(dict(to='[email protected]'))


以上是关于celery任务调度模块的主要内容,如果未能解决你的问题,请参考以下文章

基础入门_Python-模块和包.深入Celery之节点管理/任务调度/任务追踪?

celery-分布式任务调度

celery-分布式任务调度

celery-分布式任务调度

Celery异步的分布式任务调度理解

Python 最强大的任务调度框架 Celery!