• django celery 使用


    阻塞高风险 分布式任务调度系统
    Celery  是一个简单,灵活且可靠的,处理大量消息的分布式系统,他是一个专注于实时处理的任务队列,同时也支持任务调度
    broker 消息传输的中间件,生产者一旦有消息发送,将发送至broker (rq redis)
    backend 用于存储消息/任务结果,如果需要跟踪和查询任务状态,则需要添加相关配置
     
    worker 工作者 消费/执行broker中消息/任务的进程 —》持续盯着broker中是否有活,会自动拿到任务
     
    celery 实时反馈不行 无法确定消费者干活的时间
     
    使用 创建worker
    from celery import Celery
    app = Celery(‘name’,broker=‘redis://:password@127.0.0.1:6379/1').  没密码:Redis://:@127.0.0.1:6379/1
    创建任务函数
    @app.task 加了装饰器才能是任务函数
    def    task_test():
        print(‘xxx’) # 具体任务
    启动worker
    ubuntu 终端中,task.py文件同级目录下执行
    celery -A tasks worker —loglevel=info #此模式默认前台启动,终端会输出相关日志
     
    使用 创建生产者-推送任务
    在task.py文件的同级目录进入ipython3执行如下
    from tasks import task_test
    task_test.delay()
    执行完毕后,观察worker的日志
     
    使用 存储执行结果 -worker
    celery 提供存储任务执行结果的方案,需借助redis或者mysql或者memcached等
    From celery import Celery
    app = Celery(‘demo’, broker=‘redis://@127.0.0.1:6379/1', backend=‘redis://@127.0.0.1:6379/2',)
    创建任务函数
    @app.task
    def task_test(a,b)
        Print(‘xxxxx’). # 具体任务
        return a+b
     
    django 中使用celery。 跟django进程是独立的
    1.创建celery配置文件
            项目同名目录下创建celery.py
                  
    2.应用下创建tasks。py 集中定义对应worker函数
    3.视图函数充当生产者,推送具体worker函数
    4.项目目录下启动worker
    celery -A 项目同名目录名 worker -l info
     
    正式环境后台启动celery
     
    nohup celery -A proj worker -P gevent -c 1000 >celery.log 2>&1 &  gevent携程
    #1.nohup:忽略所有挂断(SIGHUP)信号 忽略各种挂断信号,基本无敌
    #2 标准输入是文件描述符0.他是命令的输入,缺省是键盘,也可以是文件或其他命令的输出
    #标准输出是文件描述符1.他是命令的输出,缺省是屏幕,也可以是文件
    #标准错误是文件描述符2.这是命令错误的输出,缺省是屏幕,同样也可以是文件
    #3 &符号 代表将命令在后台执行
     
     
     
  • 相关阅读:
    asp.net区
    推荐大家一个保护视力的Visual Studio皮肤
    微软Team Foundation Server相关技术
    TFS2008安装图解(详细版本)
    VS2008 ,TFS2008破解序列号
    分析器错误信息: 发现不明确的匹配。
    ASP.NET MVC Routing概述
    软件工程文档编写
    Visual SourceSafe学习小结
    aspnetpager 详解 (转)
  • 原文地址:https://www.cnblogs.com/lxw123123/p/14817086.html
Copyright © 2020-2023  润新知