Celery 学习教程(一)简单认识celery

 

Celery常见的三大功能:
    1.消息队列

    2.异步任务

    3.定时任务
需要了解的知识
    选择并安装消息容器(载体)
    安装celery  并 创建 一个任务
    并开启工作进程并调用任务
    记录工作状态和返回的结果
下面是官网:
https://docs.celeryproject.org/en/stable/getting-started/first-steps-with-celery.html#choosing-a-broker

英文不太友好,可以用Chrom 翻译成中文
1 安装celery
pip install celery



2.安装celery所需的redis的 依赖
pip install -U "celery[redis]"


3. 创建任务并调用

 创建文件夹,添加任务

看教程尝试着做

from celery import Celery

app = Celery('tasks',broker='redis://localhost:6379/1')

@app.task
def add(a,b):
    return a + b

启动服务

运行此服务

celery -A tasks worker --loglevel=info

启动后报错: MISCONF Redis is configured to save RDB snapshots, but is cur
rently not able to persist on disk. Commands that may modify the data set are disabled. Pleas
e check Redis logs for details about the error.

处理:

1:config set stop-writes-on-bgsave-error no 

2:vi打开redis-server配置的redis.conf文件,然后定位到stop-writes-on-bgsave-error字符串所在位置,接着把后面的yes设置为no即可。

结果:

4 .调用任务

from time import sleep

from celery import Celery

app = Celery('tasks',broker='redis://localhost:6379/1')

@app.task
def add(a,b):
    #  模拟程序需要很长的时间
    sleep(5)
    return a + b

if __name__ == '__main__':
    # print(add(2,3))
    print(add.delay(2,3))

任务开始之前重启celery,它不想Django一样  会自动重启

Ctrl+c   停止之前的任务

方向上键  输入之前的启动命令   celery -A tasks worker --loglevel=info

结果很快出来,小于设定的5s

base64 带等号  猜测为 uuid 格式

base64  纯数字 两个等号,汉字一个等号

在Django中使用 Celery

下载源码  

修改settings 配置

添加路由及视图函数

 url(r"^index/",views.index,name='index'),

def index(request):
    return HttpResponse('hello celery')

pycharm 只保留一个窗口

结果

添加异步任务

debug 改为 False

把celery搬迁到django 项目中 

#  celery 配置
CELERY_BROKER_URL = 'redis://localhost:6379/1'

#: Only add pickle to this list if your broker is secured
#: from unwanted access (see userguide/security.html)
#  接收的数据类型
CELERY_ACCEPT_CONTENT = ['json']
# 存储的后端位置
CELERY_RESULT_BACKEND = 'db+sqlite:///results.sqlite'
# 序列化格式 json
CELERY_TASK_SERIALIZER = 'json'

pip install django-celery-results

去settings 里注册

init

引用shared_task 装饰器,要不然,view中调用delay一直 报错

异步发送邮件

#  发送邮件配置
EMAIL_HOST='smtp.139.com'
EMAIL_PORT= 465
EMAIL_HOST_USER='huapen***@139.com'
EMAIL_HOST_PASSWORD =*********18'
SERVER_HOST = '127.0.0.1'
# SERVER_PORT ='8000'
EMAIL_USER_SSL= True

重启项目,重启celery 

celery -A RestEnd worker -l info -P eventlet

win10  需要安装 eventlet  启动时加参数,最好使用网易邮箱,qq邮箱,容易被标记为垃圾邮件。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值