first step with celery - 18965050/python-celery GitHub Wiki

celery是个简单, 灵活和可靠的分布式消息系统, 其任务队列主要用于实时处理和任务调度

这是个使用celery结合redis broker的小例子

  1. 安装celery

    pip install celery
    
  2. 安装并启动redis(略)

  3. 安装celery的redis依赖包

    pip install -U celery[redis]
    
  4. 编写服务实现, 并启动celery worker server

    from celery import Celery
    
    app = Celery('tasks', broker='redis://[email protected]:6379/8', backend='redis://[email protected]:6379/8')
    
    app.conf.CELERY_TASK_SERIALIZER = 'json'
    
    @app.task
    def add(x, y):
        """add test"""
        return x + y
    
    celery -A tasks worker --loglevel=info
    
  5. 编写服务调用

    from first_step import add
    result= add.delay(4,4)
    
    print(result.ready())
    
    print(result.get(timeout=1))
    

    注意:

    • 在windows环境中result.get()是获取不到结果的, 有两种解决方法
      1. 启动celery worker server时添加 --pool=solo参数
      2. 编写是否实现时不要使用backend参数, 使用配置文件的方式
    • 这个问题在Unix/Linux环境中不存在
    • celery4.x和3.x协议存在差异, 注意worker server和client使用相同的celery版本
  6. celery的配置除了通过参数的方式配置, 还可以通过配置或配置文件的方式进行