Pyhton学习-Python与中间件之Celery(7)

Pyhton浅谈-Python与中间件之Celery(7) 

一、Celery介绍:

  Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统;

  celery是用Python编写的,但该协议(AMQP协议)可以在任何语言实现。

  专注于实时处理的异步任务队列;

  同时也支持任务调度;

 

二、Celery应用场景:

  后台任务;

  异步操作;

  定期执行的工作;

  一定程度上的分布式计算;

 

三、Python操作Celery:

  1.安装Celery:pip install celery;

  2.Pyhton代码实现简单的操作:

  此代码分为两个task.py和run.py,task文件负责创建task,使用Celery执行后,run可以执行任务;

  

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:catt1e
# task.py

import time
from celery import Celery
app = Celery("task", broker="amqp://", backend="redis://loaclhost")
# backend和broker为Celery的两个参数,此处端口为默认,用户名和密码均无(测试环境),有相关安全措施的请注意
# backend:redis://password@hostname:port/db-name # broker:amqp://user:pwd@hostname:port/bhost @app.task def worker(name): print(f"{name}工作正在进行") time.sleep(2) return f'{name}--ok'

  使用Celery命令执行并打印日志:celery worker -A task -l info;

  启动run.py执行任务:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:catt1e
# run.py

   from task import worker  # task为task.py
   
   def run(name):
       w = worker.delay(name)
       while not w.ready():
           pass
       result = w.get()
       print(result)
       return result
  
   run('log')
   run('catt1e')

  3.进阶操作,按时执行任务:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:catt1e

from celery.schedules import crontab

CELERY_TIMEZONE = 'Asia/Shanghai'

CELERYBEAT_SCHEDULE = {
# Executes every Monday morning at 7:30 a.m
    'add_time':{
        'task':'task_log.worker',
        'schedule':crontab(hour=7, minute=30, day_of_week=1),
        'args':(16, 16)
    }
}

  

posted @ 2020-03-27 17:09  catt1e  阅读(343)  评论(0编辑  收藏