使用 python huey 从 redis 数据存储中获取任务结果
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
但是我得到 'no value'
如何访问数据存储中的值?
当您在 def renew()
中执行 res(blocking=True)
时,您正在从结果存储中获取结果并有效地删除它。当您随后尝试使用 id 再次获取结果时,它只会 return 什么都没有。
你有 2 个选项来解决这个问题:
- 使用
res(blocking=True, preserve=True)
将结果保存在结果存储中,这样您仍然可以在第二次调用时获取它。
- 使用像
RedisExpireStorage
这样的过期结果存储。在设置 huey 实例时配置此存储时,您可以指定结果应存储多长时间。这会给你 x 时间来根据 task/result id 进行第二次调用。
我正在使用 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
但是我得到 'no value'
如何访问数据存储中的值?
当您在 def renew()
中执行 res(blocking=True)
时,您正在从结果存储中获取结果并有效地删除它。当您随后尝试使用 id 再次获取结果时,它只会 return 什么都没有。
你有 2 个选项来解决这个问题:
- 使用
res(blocking=True, preserve=True)
将结果保存在结果存储中,这样您仍然可以在第二次调用时获取它。 - 使用像
RedisExpireStorage
这样的过期结果存储。在设置 huey 实例时配置此存储时,您可以指定结果应存储多长时间。这会给你 x 时间来根据 task/result id 进行第二次调用。