• celery的简单使用


    一   安装celery

    #首先进行一些简单配置
    pip install celery
    apt-get install erlang
    apt-get install rabbitmq-server

    二 开始操作

    #开启rabbitmq-server命令如下
    service rabbitmq-server start
    vi /var/log/rabbitmq/rabbit@ubuntu.log

      执行上述操作后会显示如下

          

        有些系统显示的是None

      显示没有找到配置文件.需要我们自己创建这个文件

    cd /etc/rabbitmq/
    vi rabbitmq.config

      编辑内容如下

    [{rabbit, [{loopback_users, []}]}].

      这里的意思是开放使用,rabbitmq默认创建的用户guest,密码也是guest,这个用户默认只能是本机访问,localhost或者127.0.0.1,从外部访问需要添加上面的配置。

       保存配置后重启服务:

    service rabbitmq-server restart 

      此时就可以从外部访问了,但此时再看log文件,发现内容还是原来的,还是显示没有找到配置文件,可以手动删除这个文件再重启服务,不过这不影响使用

    rm rabbit@localhost.log 
    service rabbitmq-server restart

      这时查看log,发现没问题

                

      开启管理UI:

    rabbitmq-plugins enable rabbitmq_management

      在Windows下打开地址:

          http://192.168.24.179:15672

                 用户名密码都是guest    

        

    三   利用celery执行异步任务 

      创建tasks.py文件

      写入以下代码

    #coding:utf-8
    from celery import Celery
    import time
    app = Celery('tasks',backend='amqp', broker='amqp://guest@127.0.0.1:5672//')
    @app.task
    def add(x, y):
        print 'hello celery'
        time.sleep(10)
        return x + y

      新建一个终端,启动celery服务

    celery -A tasks worker --loglevel=info

          

        执行任务

          

      也可以循环执行add函数来测试同步和异步的特点,例如执行10000次看他们的区别

    四   利用celery执行定时任务 

      创建time_task.py文件.主要职责是每隔10秒输出hello,每隔30秒输出world,每周一早上7点半输出Happy Mondays.你也可以改造成根据用户生日定时发送生日贺卡邮件或者每周一备份数据库等功能

    from celery import Celery
    from celery.schedules import crontab
    
    app = Celery()
    
    @app.on_after_configure.connect
    def setup_periodic_tasks(sender, **kwargs):
        # Calls test('hello') every 10 seconds.
        sender.add_periodic_task(10.0, test.s('hello'), name='add every 10')
    
        # Calls test('world') every 30 seconds
        sender.add_periodic_task(30.0, test.s('world'), expires=10)
    
        # Executes every Monday morning at 7:30 a.m.
        sender.add_periodic_task(
            crontab(hour=7, minute=30, day_of_week=1),
            test.s('Happy Mondays!'),
        )
    
    @app.task
    def test(arg):
        print(arg)

      新建一个终端  ,  命令如上

          

    以上就是celery常用的两种简单操作了, 如有疑问, 请留言!!!

  • 相关阅读:
    二分数组的一些搜索方法
    获取图像lbp特征
    字符串的模糊搜索
    Python numpy读取图片方法
    红方人员实战手册转载
    libuv的交叉编译
    Gogs的交叉编译与配置
    配置PHP8与Nginx并启动nextcloud
    hi3798mv100SDK上DropBear的交叉编译
    Nginx的交叉编译
  • 原文地址:https://www.cnblogs.com/zyj-python/p/7553623.html
Copyright © 2020-2023  润新知