从redis数据存储中使用python huey获取任务结果
我正在处理flask中的huey任务队列。我正在尝试运行任务,并从初始函数中获取任务id号:从redis数据存储中使用python huey获取任务结果,python,flask,python-huey,Python,Flask,Python Huey,我正在处理flask中的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) # Bl
@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,该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中执行resblocking=True时,将从结果存储中获取结果并有效地将其删除。然后,当您尝试使用id再次获取结果时,它将不返回任何结果
您有两个选项来解决此问题:
使用resblocking=True,preserve=True将结果保存在结果存储中,这样您仍然可以通过第二次调用获取结果。
使用使用诸如RedisExpireStorage等过期结果的存储。在设置huey实例时配置此存储时,可以指定结果的存储时间。这将为您提供x个时间,以便根据任务/结果id执行第二次调用。