美文网首页
远程调用celery

远程调用celery

作者: ldh123 | 来源:发表于2017-11-26 22:52 被阅读0次

    准备

    在master和client机器上都安装celery,redis和相关软件
    软件版本要一致,否则在task的传递过程中可能会出问题
    master机器调用client机器上的worker来进行计算
    master的ip是1.1.1.1 client的ip是2.2.2.2

    master上的配置

    在master上启动redis server作为celery的backend,redis的ip绑定为1.1.1.1
    准备文件:

    from celery import Celery
    import time
    
    broker = 'redis://1.1.1.1:6379'
    backend = 'redis://1.1.1.1:6379'
    
    
    app = Celery('tasks', broker=broker, backend=backend, task_serializer='pickle')
    app.conf.update(CELERY_ACCEPT_CONTENT = ['pickle'], CELERY_RESULT_SERIALIZER = 'pickle')
    
    @app.task(serializer="pickle")
    def add(x, y):
        return x + y
    
    
    result = app.send_task('task.add', [1,2])
    time.sleep(1)
    print(result.ready())
    print(result.result)
    

    在client上配置

    准备文件task.py:

    from celery import Celery
    import time
    
    broker = 'redis://1.1.1.1:6379'
    backend = 'redis://1.1.1.1:6379'
    
    
    app = Celery('tasks', broker=broker, backend=backend, task_serializer='pickle')
    app.conf.update(CELERY_ACCEPT_CONTENT = ['pickle'], CELERY_RESULT_SERIALIZER = 'pickle')
    
    @app.task(serializer="pickle")
    def add(x, y):
        return x + y
    

    启动celery的worker

    celery -A task worker  --loglevel=info
    

    在master上运行准备的文件

    看到结果

    True
    3
    

    相关文章

      网友评论

          本文标题:远程调用celery

          本文链接:https://www.haomeiwen.com/subject/zlglbxtx.html