You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Redis轮询检查rpm文件transfer状态及超时处理?

问题解决:Redis轮询判断文件传输状态

首先看你提供的Redis返回JSON结构,transfer字段是布尔值(true),不是字符串,原代码里用output_json["transfer"] == "true"会判断失败,这是第一个要修正的点。

另外,轮询过程中需要添加短时间休眠,避免高频请求Redis占用资源;同时要处理超时后的逻辑,输出transfer_status_report的值。

以下是完善后的代码:

import json
import time

start_time = time.time()
timeout = 300  # 5分钟,单位秒
poll_interval = 5  # 轮询间隔,单位秒,可根据需求调整

output_json = retrieve_status_from_redis()

while time.time() < start_time + timeout:
    if output_json["file_extension"] == "rpm":
        # 注意:原JSON中transfer是布尔值,直接判断即可,不用字符串比较
        if output_json["transfer"] is True:
            print(f"Transfer successful for the file")
            break
        else:
            # 轮询间隔休眠,避免频繁请求
            time.sleep(poll_interval)
            # 重新从Redis获取最新状态
            output_json = retrieve_status_from_redis()
    else:
        # 如果不是rpm扩展名,直接退出循环(根据需求调整,若不需要可删除)
        print("File extension is not rpm, skip transfer check")
        break
else:
    # 循环正常结束(未触发break),说明超时
    print(f"Transfer timeout: {output_json['transfer_status_report']}")

关键改动说明:

  • 修正transfer字段的判断逻辑:从字符串比较改为布尔值判断is True,匹配Redis返回的JSON结构
  • 添加poll_interval轮询间隔,每次轮询前休眠,降低Redis请求频率
  • 新增while-else结构:当循环因超时结束(没有触发break),自动执行超时逻辑,输出transfer_status_report
  • 补充非rpm扩展名的处理分支(可根据实际需求保留或删除)

内容的提问来源于stack exchange,提问作者Rafa S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 13:09:52