烧瓶芹菜获得任务实时任务状态

时间:2017-10-27 01:28:54

标签: asynchronous flask celery django-celery celery-task

所有

我正在使用烧瓶,我正在寻找一种最终在表中显示芹菜作业状态的方法。我想出了一个只能工作一半的解决方案。我有mongodb运行作为我的backend_result我以为我可以只查询数据库的状态。不幸的是,它永远不会告诉待处理的任务只有成功或失败的作业,所以如果有一个长时间运行的任务,你就不会知道该作业是待定的。

是否有任何解决方案可以获得所有实时任务状态。

@app.route('/process/')
def process():

    result = add.delay()

    return 'async request sent'

@app.route('/job_status')
def job_status():

    db_coll = 'flask_app_job_results'

    job_status = (mongo.db[db_coll].find({}, {'status':1, '_id':1})).sort('date',pymongo.ASCENDING)

    job_status_list = []
    for r in job_status:
        try:
            job_status_list.append(r['status'])
        except:
            app.logger.info('status key value not found in mongoDB')

    app.logger.info('in job status the jobs are {}'.format(job_status_list))


    return str(job_status_list)

@celery.task(name='app.add')
def add():
    time.sleep(60)
    num = 5 + 5

0 个答案:

没有答案