Я создал давно работающего сотрудника Celery, который обрабатывает очистку веб-страниц и заполняет объект словаря.Я создал несколько заданий, которые выполняются асинхронно и которые заполняют один и тот же объект dict.Мне нужен способ вывести результат в моем работнике в файл JSON.Это можно делать периодически или после выполнения заданий, но это не должно блокировать мой ответ API.
@celery.task(name="tasks.workertask")
def worker(d, x):
"""
Do some long task on x and populate the dictionary d
"""
def collect(x_list)
d = dict()
for x in x_list:
worker.delay(d,x)
return d.copy()
@application.route('/api')
def api():
#Store x_list
x_list = [...]
d = collect(x_list)
with open('result.json','w') as fp:
json.dump(d,fp)
return "Dumping into JSON"
Дамп в result.json пуст, поскольку задача выполняется в фоновом режиме.Я не хочу, чтобы эта задача блокировала мой ответ API, так как задача очень очень длинная (более 12 часов)