Add param to enable "Auto-Acknowledgment" of Events to the SocketModeClient
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Inizia con il flusso di SocketModeClient enqueue_message e la configurazione dell'async socket client descritti nell'issue. Traccia come gli eventi burst accodati ricevono gli acknowledgment, quindi verifica che i messaggi ricevano l'acknowledgement entro il periodo richiesto mentre i listener continuano a elaborarli e la connessione socket rimane aperta.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
One issue we have noticed in our deployment of a Slack app is that when there are a burst of messages being received, the built-in queue can become too large and can cause messages to expire within the 3-5 second acknowledgment period.
For example, our app receives 200 messages within a 5 second window. They are then received and queued for the message listeners to process. If the queue gets too large, it may take longer than 3-5 seconds for a listener to dequeue and process a message. This results in the app being restricted and unable to receive new messages. This can get exponentially worse when the burst is followed up by a burst of retry messages as well.
Reproducible in:
The Slack SDK version
slack-sdk==3.19.2
Python runtime version
Python 3.10.5
OS info
ProductName: macOS
ProductVersion: 11.5.2
BuildVersion: 20G95
Darwin Kernel Version 20.6.0: Wed Jun 23 00:26:31 PDT 2021; root:xnu-7195.141.2~5/RELEASE_X86_64
Steps to reproduce:
(Share the commands to run, source code, and project settings (e.g., setup.py))
- Setup async socket client
- Append one listener
- Receive burst of events
Expected result:
So the thought was to set a parameter which would allow messages to be auto-acknowledged as they enter the queue. This would allow the listeners to handle the events irrespective of their processing time.
It could work something like this:
async def enqueue_message(self, message: str):
await self.message_queue.put(message)
if self.auto_acknowledge_messages:
await self.auto_acknowledge_message(raw_message=message)
if self.logger.level <= logging.DEBUG:
queue_size = self.message_queue.qsize()
session_id = await self.session_id()
self.logger.debug(f"A new message enqueued (current queue size: {queue_size}, session: {session_id})")
async def auto_acknowledge_message(self, raw_message):
if raw_message.startswith("{"):
message = json.loads(raw_message)
if message.envelope_id:
response = SocketModeResponse(envelope_id=message.envelope_id)
await self.send_socket_mode_response(response)
Actual result:
Socket connection is closed due to missing too many acknowledgements.
Requirements
For general questions/issues about Slack API platform or its server-side, could you submit questions at https://my.slack.com/help/requests/new instead. 🙇
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