遠(yuǎn)程調(diào)用celery

準(zhǔn)備

在master和client機(jī)器上都安裝celery,redis和相關(guān)軟件
軟件版本要一致,否則在task的傳遞過(guò)程中可能會(huì)出問(wèn)題
master機(jī)器調(diào)用client機(jī)器上的worker來(lái)進(jìn)行計(jì)算
master的ip是1.1.1.1 client的ip是2.2.2.2

master上的配置

在master上啟動(dòng)redis server作為celery的backend,redis的ip綁定為1.1.1.1
準(zhǔn)備文件:

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上配置

準(zhǔn)備文件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

啟動(dòng)celery的worker

celery -A task worker  --loglevel=info

在master上運(yùn)行準(zhǔn)備的文件

看到結(jié)果

True
3
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容