python:在django中用celery实现异步

celery英文官方网站:www.celeryproject.org
中文网站:http://docs.jinkan.org/docs/celery/

celery

Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具。
专注于实时处理的任务队列,同时也支持任务调度。

作用:

  • 解决耗时操作:开一个新的进程,去操作耗时操作,不影响原有进程 定时操作,使
  • List item

用celery定时执行

操作:

  1. 定义一个任务task,也就是一个python函数
  2. 将耗时任务存储到队列queue中
  3. 在一个新的进程中,负责执行队列中的任务,worker
  4. 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几乎所有的部分都可以扩展或者单独使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值