Retry decorator on RateLimitExceeded issue

未關閉
#1,577 2 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

維護者通常 1 天內回覆

還沒有人認領這個 Issue。

評估

難度
4/5
預估耗時
3-5 天
新手友好度
35/100
Issue 類型
缺陷
描述清晰度
基本清楚
活躍度
停滯
技術堆疊
python
領域
backend, cloud

研究方向

先追蹤 libcloud/common/base.py 中的 retry 裝飾器和請求流程,然後比較 libcloud/common/azure_arm.py 中的 Azure ARM 路徑與報告中所示的 azure_arm 驅動程式呼叫。重現已設定的速率限制案例,並判定傳回的 429 如何變成 RateLimitReachedError。啟用 retry 邏輯後,速率限制回應的重試行為能夠正常運作,即表示完成。

由索引模型根據 Issue 內容生成。

描述

stale

Summary

Enabling retry logic does not work for rate limit exceeded responses.

Detailed Information

retry decorator expects a RateLimitExceeded error to be raised, though session.request method does not raise an exception if a response is returned by the server no matter the status code.

I've tested it on azure_arm driver by setting RETRY_FAILED_HTTP_REQUESTS to True and trying:

while True:
    nodes = driver.list_nodes()
    print(nodes)

Hitting the throttling limit results in:

  Traceback (most recent call last):
  File "test.py", line 23, in <module>
    nodes = driver.list_nodes()
  File "/home/dimgal/libcloud/libcloud/compute/drivers/azure_arm.py", line 395, in list_nodes
    r = self.connection.request(action,
  File "/home/dimgal/libcloud/libcloud/common/azure_arm.py", line 227, in request
    return super(AzureResourceManagementConnection, self) \
  File "/home/dimgal/libcloud/libcloud/common/base.py", line 655, in request
    response = responseCls(**kwargs)
  File "/home/dimgal/libcloud/libcloud/common/base.py", line 165, in __init__
    raise exception_from_message(code=self.status,
libcloud.common.exceptions.RateLimitReachedError: 429 Rate limit exceeded

urllib3 supports retries based on HTTP status codes, maybe use this? Let me know how you think this should be handled

主要語言
Python
星號
2.1k
分支
935
平均合併
5 天 3 小時
30 天內合併 PR
15

環境準備

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

apache/libcloud 的其他 Issue

查看 apache/libcloud 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。