远程调用celery

准备

在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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容