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

Python操作Azure存储队列自定义消息过期时间失效问题

Azure存储队列自定义消息过期时间不生效问题修复

问题概述

向Azure存储队列发送消息时,代码中设置了自定义过期时间(TTL),但消息仍使用默认的7天过期时间,Azure门户中手动设置则可正常生效。

代码错误分析

原代码存在两处关键问题:

  • send_message方法中传入的消息变量名错误:使用了未定义的queue_message,实际应该是函数参数中的message。
  • 主函数中coordinates变量未定义,会导致运行报错。

修复后的代码

from azure.storage.queue import QueueClient
from datetime import datetime, timedelta
import time

# 替换为你的Azure存储账户信息
account_name = 'you_account_name'
account_key = 'your_account_key'

connection_string = f"DefaultEndpointsProtocol=https;AccountName={account_name};AccountKey={account_key};EndpointSuffix=core.windows.net"


def send_message_to_queue(queue_name, message, ttl_seconds):
    # 初始化QueueClient
    queue_client = QueueClient.from_connection_string(connection_string, queue_name)
    
    # 发送消息并设置TTL(单位:秒)
    queue_client.send_message(message, time_to_live=ttl_seconds)
    print(f"消息 '{message}' 已发送至队列 '{queue_name}',过期时间为 {ttl_seconds} 秒。")


if __name__ == "__main__":
    queue_name = 'your_queue_name'
    message = "hello"
    ttl_seconds = 5  # 设置5秒过期
    
    # 替换为实际的循环逻辑,示例发送3次消息
    for _ in range(3):
        send_message_to_queue(queue_name, message, ttl_seconds)
        time.sleep(5)

验证说明

修复后运行代码,可通过以下方式验证TTL是否生效:

  • 等待设置的TTL时长(如5秒)后,在Azure门户中查看队列,对应消息会被自动删除。
  • 发送消息后立即在门户中查看消息详情,确认"过期时间"字段是否与代码中设置的TTL一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 03:25:04