Add smart Rate Limiter
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- python
- Ambito
- api, backend-api-design, performance
Direzione di ricerca
Inizia con gli handler di retry integrati sincroni e asincroni collegati, quindi confronta la guida sul rate limit del Java SDK. Mappa il comportamento richiesto sui client Web API, Webhook, Audit Logs e SCIM. Il lavoro è completato quando un livello di controllo del traffico attivabile tramite opt-in supporta client sincroni e asincroni, con uno storage estensibile delle metriche e senza sleep bloccante nelle app asyncio.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Now that we have a built-in retry handler for rate limited errors in v3.9, retrying a request after getting rate-limited is much easier than before.
- https://github.com/slackapi/python-slack-sdk/releases/tag/v3.9.0
- https://github.com/slackapi/python-slack-sdk/blob/v3.9.1/slack_sdk/http_retry/builtin_handlers.py#L52-L91
- https://github.com/slackapi/python-slack-sdk/blob/v3.9.1/slack_sdk/http_retry/builtin_async_handlers.py#L49-L88
However, getting rate-limited results in a much longer execution time as the whole operation. As a solution for this pain point, we will add a built-in traffic control layer like we do in the Java SDK: https://slack.dev/java-slack-sdk/guides/web-api-basics#rate-limits
A few points to consider for implementing this feature:
- The module manages the amount of requests in the last minute and calculate the interval before the next API call
- Metrics data can be in memory in most use cases but the part should be extensible to switch to other data storage (e.g., Redis)
- As we do in the Java SDK, running the same script/app in multiple hosts should be supported.
- For backward-compatibility, we don't turn the feature on by default. Users can enable it only when they want it.
- Both sync and async API clients should be supported in a proper way (= don't use
time.sleepin asyncio apps) - All API clients (Web API, Audit Logs, SCIM, Webhook) should have the functionality.
Category (place an x in each of the [ ])
- slack_sdk.web.WebClient (sync/async) (Web API client)
- slack_sdk.webhook.WebhookClient (sync/async) (Incoming Webhook, response_url sender)
- slack_sdk.models (UI component builders)
- slack_sdk.oauth (OAuth Flow Utilities)
- slack_sdk.socket_mode (Socket Mode client)
- slack_sdk.audit_logs (Audit Logs API client)
- slack_sdk.scim (SCIM API client)
- slack_sdk.rtm (RTM client)
- slack_sdk.signature (Request Signature Verifier)
Requirements
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to those rules.
- Lingua principale
- Python
- Stelle
- 4k
- Fork
- 857
- Merge medio
- 22h 21m
- PR unite (30g)
- 16
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di slackapi/python-slack-sdk
-
needs info server-side-issue
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
slackapi/python-slack-sdk#1961 · 3 commenti ·
-
Use logger.isEnabledFor(logging.DEBUG) instead of logger.level <= logging.DEBUG for debug guards Apertaauto-triage-skip bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
slackapi/python-slack-sdk#1957 ·
-
auto-triage-skip discussion
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
slackapi/python-slack-sdk#1940 · 2 commenti ·
-
chat_postMessage silently forwards thread_id to the API, so a threaded reply posts to the channel Apertaauto-triage-skip enhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
slackapi/python-slack-sdk#1923 · 2 commenti ·
-
SocketModeClient.connect() retries forever against a permanently closed aiohttp ClientSession Apertaauto-triage-skip bug socket-mode
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
slackapi/python-slack-sdk#1922 · 2 commenti ·
Tutte le issue di slackapi/python-slack-sdk
Issue simili
-
bug confirmed issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
open-webui/open-webui#30750 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
good first issue
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100