微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 celery 中模拟具有状态的长 I/O 数据库操作?

如何解决如何在 celery 中模拟具有状态的长 I/O 数据库操作?

我想基于 long_task 模拟数据库 I/O 操作,但是我被困在如何在这种情况下实现工作流来处理 update_state,and catches 在回溯字段中发送。我得到了以下代码,但是如何在更现实的任务函数中模拟该队列的进度?

@shared_task
def long_task(self):
    """Background task that runs a long function with progress reports."""
    verb = ['Starting up','Booting','Repairing','Loading','Checking']
    adjective = ['master','radiant','silent','harmonic','fast']
    noun = ['solar array','particle reshaper','cosmic ray','orbiter','bit']
    message = ''
    total = random.randint(10,50)
    for i in range(total):
        if not message or random.random() < 0.25:
            message = '{0} {1} {2}...'.format(random.choice(verb),random.choice(adjective),random.choice(noun))
        current_task.update_state(state='PROGRESS',Meta={'current': i,'total': total,'status': message})
        time.sleep(1)
    return {'current': 100,'total': 100,'status': 'Task completed!','result': 42}


def insert_db_demo(result):
    print('insert db,result {}'.format(result))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。