我正在尝试让Celery在Windows机器上使用Python 3.6进行工作 Redis是我的消息代理。但是,我发现只有大约一半的任务正在执行。其余任务将永远不会得到处理。
为帮助调试此问题,我创建了一个简单的任务, 等待5秒钟,然后写入文件:
@capp.task
def test(inputs):
print('Entering function Test for simulation: ' + inputs['simulation'])
time.sleep(5)
fout = open(inputs['results_path'] + inputs['simulation'], 'w')
fout.write("Test\n")
fout.close()
return 0.0
我在上面称呼如下:
inputs_array = []
inputs_array.append({'simulation':'Test1','results_path':results_path})
inputs_array.append({'simulation':'Test2','results_path':results_path})
inputs_array.append({'simulation':'Test3','results_path':results_path})
inputs_array.append({'simulation':'Test4','results_path':results_path})
print("Entering the Test simulation: ")
tasks = []
for inputs in inputs_array:
task = vmlvsv.app_test.test.apply_async((inputs,), compression='zlib')
tasks.append(task)
根据建议,我使用了以下celeryconfig设置:
CELERY_ACKS_LATE = True
CELERYD_PREFETCH_MULTIPLIER = 1
但是,仅执行了上述四个任务的一个子集(通常只有2个,有时是3个)?
我在使用芹菜(3.1.25)和Redis(2.10.6)
称为:
芹菜工人-A mp_app.capp --loglevel = debug
任何建议都将受到欢迎!
谢谢!