• 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)
        }
    }
    

      

  • 相关阅读:
    D3D资源管理
    地形有必要做LOD吗?
    J2SE IO编程
    J2SE 枚举类型 [enum]
    Struts2 DefaultAction (默认Action)
    J2SE 内部类 [Inner]
    J2SE 断言 [Assert]
    JavaScript
    SCM_CVS_SVN 版本控制器
    Struts2 IncludeModules(包含 <include file="login.xml" />)
  • 原文地址:https://www.cnblogs.com/catt1e/p/12582583.html
Copyright © 2020-2023  润新知