Add smart Rate Limiter
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- python
- Área
- api, backend-api-design, performance
Línea de trabajo
Comienza con los handlers de reintento integrados síncronos y asíncronos enlazados, y después compara la guía de rate limit del Java SDK. Mapea el comportamiento solicitado en los clientes de Web API, Webhook, Audit Logs y SCIM. Se considera terminado cuando una capa de control de tráfico activable de forma opcional admite clientes síncronos y asíncronos, cuenta con almacenamiento extensible de métricas y no usa un sleep bloqueante en aplicaciones asyncio.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Python
- Estrellas
- 4k
- Forks
- 857
- Merge medio
- 22 h 21 min
- PR fusionados (30 d)
- 16
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de slackapi/python-slack-sdk
-
needs info server-side-issue
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
slackapi/python-slack-sdk#1961 · 3 comentarios ·
-
Use logger.isEnabledFor(logging.DEBUG) instead of logger.level <= logging.DEBUG for debug guards Abiertoauto-triage-skip bug
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
slackapi/python-slack-sdk#1957 ·
-
auto-triage-skip discussion
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
slackapi/python-slack-sdk#1940 · 2 comentarios ·
-
chat_postMessage silently forwards thread_id to the API, so a threaded reply posts to the channel Abiertoauto-triage-skip enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
slackapi/python-slack-sdk#1923 · 2 comentarios ·
-
SocketModeClient.connect() retries forever against a permanently closed aiohttp ClientSession Abiertoauto-triage-skip bug socket-mode
Dificultad 3/5 1-2 días Aptitud para principiantes 72/100
slackapi/python-slack-sdk#1922 · 2 comentarios ·
Todos los issues de slackapi/python-slack-sdk
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
stephrobert/dsoxlab#238 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
sublimehq/package_control#1780 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
nwg-piotr/nwg-displays#145 ·