zoukankan      html  css  js  c++  java
  • 如何使用django+celery+RabbitMQ实现异步执行

    1)
    安装
    需要安装RabbitMQ、Celery和Django-celery
    Celery和Django-celery的安装直接pip就好

    2)
    修改settings.py
    在INSTALLED_APPS中加入app:
    INSTALLED_APPS = (
    ...
    'djcelery',
    'main', # startapp
    }

    3)
    添加RabbitMQ的配置:
    import djcelery
    djcelery.setup_loader()

    BROKER_URL = 'amqp://guest:guest@localhost:5672/'

    #或者
    #BROKER_HOST = "localhost"
    #BROKER_PORT = 5672
    #BROKER_USER = "guest"
    #BROKER_PASSWORD = "guest"
    #BROKER_VHOST = "/"

    4)
    创建数据库
    $ python manage.py syncdb #default
    $ python manage.py migrate djcelery #for south

    5)
    定义和调用tasks
    在app(main)目录下新建文件tasks.py
    from celery import task

    @task()
    def add(x, y):
    return x + y

    6)
    开启worker:
    $ python manage.py celery worker --loglevel=info
    $ #OR
    $ python manage.py celeryd -l info --settings=settings

    7)
    调用任务:
    $ python manage.py shell
    In [1]: from main.tasks import add

    In [2]: a=add.delay(1,1)

    In [3]: a.ready() #worker未开启
    Out[3]: False

    In [4]: a=add.delay(1,1) #开启worker,重新执行

    In [5]: a.ready()
    Out[5]: True

    In [9]: a.get() #Waits until the task is done and returns the retval.
    Out[9]: 2

    In [10]: a.successful()
    Out[10]: True

    8)运行index:$ python app.py 8000 ,运行celery:$ python manage.py celeryd -l info --settings=settings
  • 相关阅读:
    2018-04-13Java编程夯实学习心得(3)
    2018-03-28JavaScript学习心得
    2018-03-27mysql学习心得
    JavaScript-作用域
    样式切换图
    购物车结算
    Visual Studio Code快捷键操作
    复选框
    win10锁屏界面无法设置隐藏
    轮播图
  • 原文地址:https://www.cnblogs.com/dengshihuang/p/8250969.html
Copyright © 2011-2022 走看看