0

在此处输入图像描述

我正在使用 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

但是我得到“没有价值”

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

4

1 回答 1

1

当你在做res(blocking=True)的时候,def renew()你正在从结果存储中获取结果并有效地删除它。然后,当您尝试使用 id 再次获取结果时,它不会返回任何内容。

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

  • 要么用于res(blocking=True, preserve=True)将结果保存在结果存储中,因此您仍然可以在第二次调用时获取它。
  • 使用使用过期结果的存储,例如RedisExpireStorage. 在设置 huey 实例时配置此存储时,您可以指定结果应存储多长时间。这将使您有 x 时间根据任务/结果 ID 进行第二次调用。
于 2020-04-02T22:15:06.427 回答