celery英文官方网站:www.celeryproject.org
中文网站:http://docs.jinkan.org/docs/celery/
celery
Celery 是一个简单、灵活且可靠的,处理大量消息的
分布式系统
,并且提供维护这样一个系统的必需工具。
专注于实时处理的任务队列,同时也支持任务调度。
作用:
- 解决耗时操作:开一个新的进程,去操作耗时操作,不影响原有进程 定时操作,使
- List item
用celery定时执行
操作:
- 定义一个任务task,也就是一个python函数
- 将耗时任务存储到队列queue中
- 在一个新的进程中,负责执行队列中的任务,worker
- broker:负责调度,将任务加到队列中,在布置环境中使用redis
安装包
pip install celery
pip install celery
-
with
-
redis
pip install django
-
celery
配置settings
将djcelery包加入到INSTALLED_APPS中
并添加以下代码:
import
djcelery
djcelery
.
setup_loader
(
)
# 初始化所有的task
BROKER_URL
=
'redis://127.0.0.1:6379/0'
# 把所有的任务放在queue中,默认用0这个数据库
CELERY_IMPORTS
=
(
'test1.task'
)
# 在test1这个应用下使用任务
在test1应用目录下创建task.pty文件
import
time
from
celery
import
task
@task
def
show
(
)
:
print
(
'hello...'
)
time
.
sleep
(
5
)
print
(
'world...'
)
迁移,生成celery需要的数据表
此时不需要生成迁移,直接进行迁移
python manage
.
py migrate
启动redis
sudo redis
-
server
/
etc
/
redis
/
redis
.
conf
启动worker
python manage
.
py celery worker
-
-
loglevel
=
info
定义视图,调用task
函数名.delay([参数])
from
task
import
*
def
celeryTest
(
request
)
:
show
.
delay
(
)
return
HttpResponse
(
'ok'
)
配置url
url
(
r
'^celerytest/$'
,
views
.
celeryTest
)
,
总结:
- 简单:易使用和维护,不需要配置文件
- 高可用性:如果链接丢失或者失败,客户端会自动重试,并broker通过主/主或者主/从方式复制来提高可用性。
- 快速:单个celery进程每分钟可处理数以百万计的任务
- 灵活:celery几乎所有的部分都可以扩展或者单独使用。