1 回答

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
正如評(píng)論中所討論的,這種情況下的問(wèn)題很可能是由于網(wǎng)絡(luò)瞬態(tài)錯(cuò)誤造成的,這在分布式環(huán)境中很正常。大多數(shù)情況下,暫時(shí)性錯(cuò)誤可以通過(guò)重試來(lái)恢復(fù)。不幸的是,在v0.50.x的舊版 python 服務(wù)總線 SDK 中,沒(méi)有開(kāi)箱即用的重試功能。最新的 V7 SDK中添加了指數(shù)回退重試(目前處于預(yù)覽版,很快將成為 GA)。具體可以參考v0.50到v7的遷移指南。下面是使用 V7 SDK 的接收器代碼示例(注意:同步變體,還有異步支持,您可以在廣泛的示例列表中查看)。
V7 SDK 現(xiàn)在允許您為客戶端傳遞重試參數(shù)。雖然默認(rèn)值一般來(lái)說(shuō)應(yīng)該足夠了。
retry_total
:允許的重試總數(shù)。優(yōu)先于其他計(jì)數(shù)。默認(rèn)值為 10。
retry_backoff_factor
:在第二次嘗試之后在嘗試之間應(yīng)用的退避因子(大多數(shù)錯(cuò)誤可以通過(guò)第二次嘗試立即解決,沒(méi)有延遲)。在固定模式下,重試策略將始終休眠 {backoff Factor}。在“指數(shù)”模式下,重試策略將休眠:{退避因子} * (2 ** ({總重試次數(shù)} - 1)) 秒。如果 backoff_factor 為 0.1,則重試將在重試之間休眠 [0.0s, 0.2s, 0.4s, ...]。默認(rèn)值為 0.8。
retry_backoff_max
:最大回退時(shí)間。默認(rèn)值為 120(以秒為單位)。
servicebus_client = ServiceBusClient.from_connection_string(conn_str=CONNECTION_STR, retry_total=10, retry_backoff_factor=1, retry_backoff_max=30)
with servicebus_client:
? ? receiver = servicebus_client.get_queue_receiver(queue_name=QUEUE_NAME)
? ? with receiver:
? ? ? ? received_msgs = receiver.receive_messages(max_message_count=10, max_wait_time=5)
? ? ? ? for msg in received_msgs:
? ? ? ? ? ? print(str(msg))
? ? ? ? ? ? msg.complete()
添加回答
舉報(bào)