Flask 芹菜能在队列中存储给定任务状态的序列吗?

Flask 芹菜能在队列中存储给定任务状态的序列吗?,flask,celery,Flask,Celery,我正在构建一个烧瓶应用程序,其中包含一个很长的处理任务,我使用芹菜。 长任务被划分为子任务,之后我用一条新消息更新状态。 我编写了一个Flask路由来请求任务的状态,但是我不只是返回当前状态及其元数据(消息msg),而是希望返回所有“未读”的进度状态及其消息 基本上,我希望始终打印web客户端中的所有状态序列。在下面的示例中,即使在第一次taskstatus请求时,任务的状态是第二个进度状态,使用消息“More processing…”,我也希望发送前一个状态“processing file…”

我正在构建一个烧瓶应用程序,其中包含一个很长的处理任务,我使用芹菜。 长任务被划分为子任务,之后我用一条新消息更新状态。 我编写了一个Flask路由来请求任务的状态,但是我不只是返回当前状态及其元数据(消息msg),而是希望返回所有“未读”的进度状态及其消息

基本上,我希望始终打印web客户端中的所有状态序列。在下面的示例中,即使在第一次taskstatus请求时,任务的状态是第二个进度状态,使用消息“More processing…”,我也希望发送前一个状态“processing file…”

一种选择是跟踪某个全局变量中的消息,并在消息发送后清除它,但我想知道芹菜中是否有类似的“集成”功能

芹菜任务

烧瓶

@app.route(“/status/”)
def任务状态(任务id):
任务=异步结果(任务id)
如果task.state==“挂起”:
#工作还没有开始
响应={'msg':'Task pending…'}
如果task.state=='PROGRESS',则为else:
响应={'msg':}
否则,如果task.state==“成功”:
响应={'msg':task.info.get('msg')}
其他:
响应={'msg':'something other'}
返回jsonify(响应)
@celery.task(bind=True, name='tasks.process')
def process(self, filepath):

    self.update_state(
        state='PROGRESS',
        meta={'msg': 'Processing file...'})

    ...
    
    self.update_state(
        state='PROGRESS',
        meta={'msg': 'More processing...'})
        
    ...

    return {'msg': 'Task completed !'}
@app.route('/status/<task_id>')
def taskstatus(task_id):
    task = AsyncResult(task_id)
    if task.state == 'PENDING':
        # job did not start yet
        response = {'msg': 'Task pending...'}        
    else if task.state == 'PROGRESS':
        response = {'msg': <LIST OF UNREAD MSG FROM PAST PROGRESS STATES>}
    else if task.state == 'SUCCESS': 
        response = {'msg': task.info.get('msg')}
    else: 
        response = {'msg': 'something else'}
    return jsonify(response)