셀 콜렉션의 콜백 함수에 추가 인수를 전달해야합니다. (셀러리 버전 : latentcall 4.1.0()와 파이썬 2.7)Celery 코드의 콜백 함수에 추가 인수 전달
는 아래의 샘플 생각해
from tasks import get_stock_info, call_back
from celery import group, chord
def chord_queue():
header = (get_stock_info.subtask((delay,)) for delay in [4, 5, 4])
callback = call_back.subtask()
header1 = (get_stock_info.subtask((delay,)) for delay in [4, 4, 4])
res = chord(header,queue='susanoo_dev')(callback)
res1 = chord(header1,queue='susanoo_core')(callback)
print(res.get())
print(res1.get())
print("We are done")
if __name__ == '__main__':
chord_queue()
tasks.py
program.py을
from pandas_datareader import data
from celery_app import app
import time
@app.task
def get_stock_info(delay):
print('hello Celery--------')
time.sleep(delay)
print('Whats up')
return 10
@app.task
def call_back(num):
print("Everything is done------")
print("Everything is done------")
return sum(num)
celery_ap
from celery import Celery
from kombu import Queue
app = Celery('tasks', broker='amqp://my_user:[email protected]/my_vhost', backend='redis://localhost:6379/0')
CELERY_CONFIG = {
'CELERY_DEFAULT_QUEUE': 'default',
'CELERY_QUEUES': (Queue('dev'), Queue('core'),)
}
app.conf.update(**CELERY_CONFIG)
화음이 호출되는이 경우에 지금
모든 3 get_stock_info 작업 후 p.py는하려면 call_back가 호출되는, 완료되는 값 , get_stock_info의 반환 값이 자동으로 전달됩니다. 반환 값과 함께 콜백 함수에 "abcd"라는 문자열을 추가 인수로 전달하려고합니다.
어떻게해야합니까?
이미 일부 블로그 제안이 일을 시도/SO있는 등 답변
def chord_queue():
header = (get_stock_info.subtask((delay,)) for delay in [4, 5, 4])
callback = call_back.subtask(kwargs={'my_str' : 'abcd'})
header1 = (get_stock_info.subtask((delay,)) for delay in [4, 4, 4])
res = chord(header,queue='susanoo_dev')(callback)
res1 = chord(header1,queue='susanoo_core')(callback)
print(res.get())
print(res1.get())
print("We are done")
tasks.py
@app.task
def call_back(num, my_str):
print("Everything is done------")
print("Everything is done------")
print my_str
return my_str, sum(num)
그러나이 program.py 작동하지 않는 것으로 보이며 다음 오류가 발생합니다 :
celery.backends.base.ChordError: Callback error: TypeError("call_back() got an unexpected keyword argument 'my_str'",)