繁体   English   中英

从 redis 数据存储中使用 python Huey 获取任务结果

[英]Getting task result with python huey from redis data store

在此处输入图片说明

我正在使用 flask 中的 Huey 任务队列https://github.com/coleifer/huey 我正在尝试运行一个任务并从我的初始函数中获取一个任务 ID 号:

@main.route('/renew',methods=['GET', 'POST'])
def renew():
    print(request.form)
    user =request.form.get('user')
    pw =request.form.get('pw')
    res =renewer(user,pw)
    res(blocking=True)  # Block for up to 5 seconds
    print(res)
    return res.id

运行后我插入输出的id(与截图中的结果相同)

在此处输入图片说明

进入 :

@main.route('/get_result_by_id',methods=['GET', 'POST'])
def get_result_by_id():
    print(request.form)
    id =request.form.get('id')
    from ..tasking.tasks import my_huey
    res = my_huey.result(id)
    if res==None:
        res = 'no value'
    return res

但是我得到“没有价值”

如何访问数据存储中的值?

当您在def renew()中执行res(blocking=True) ,您是从结果存储中获取结果并有效地将其删除。 当您然后尝试使用 id 再次获取结果时,它只会返回任何内容。

您有 2 个选项可以解决此问题:

  • 要么使用res(blocking=True, preserve=True)将结果保存在结果存储中,这样您仍然可以在第二次调用时获取它。
  • 使用使用过期结果的存储,例如RedisExpireStorage 在设置 Huey 实例的同时配置此存储时,您可以指定应存储结果的时间。 这将为您提供 x 时间根据任务/结果 ID 进行第二次调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM