Я хотел бы обновить состояние моей задачи Celery от другой функции. Вот что у меня сейчас:Колба сельдерея update_state изнутри другая функция
Маршрут
@app.route('/my-long-function', methods=['POST'])
def my_long_function():
param1 = request.form['param1']
param2 = request.form['param2']
task = outside_function.delay(param1, param2)
return task.id
сельдерея задач - начинает some_python_script.handle в фоновом режиме
@celery.task(name='outside_function')
def outside_function(param1, param2):
with app.app_context():
some_python_script.handle(param1, param2)
some_python_script.handle:
def handle(param1, param2):
param1 + param2
# many, many different things
В идеале, я 'd хотел бы иметь возможность self.update_state задачи сельдерея, чтобы я мог легко запросить его статус из своего приложения , Например, так:
some_python_script.handle (в идеале):
def handle(param1, param2):
param1 + param2
# many, many different things
self.outside_function.update_state('PROGRESS', meta = {'status':'progressing'})
проверка хода (в идеале):
@app.route('/status/<task_id>')
def taskstatus(task_id):
task = outside_function.AsyncResult(task_id)
response = {
'state': task.state,
'id': task.id,
'status' : task.status,
}
return jsonify(response)
Или что-то подобное. Буду признателен за любую помощь, я очень новичок в сельдере!