slackapi/bolt-python

Lazy listeners do not work with Chalice local testing server

Offen

#490 geöffnet am 08.10.2021

 (4 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)Python (288 Forks)auto 404
area:adapterenhancementgood first issue

Repository-Metriken

Stars
 (1.317 Sterne)
PR-Merge-Metriken
 (Durchschn. Merge 1T 15h) (10 gemergte PRs in 30 T)

Beschreibung

I want to perform operations when a member has joined a channel which takes more than 5 seconds, but I'm getting BrokenPipeError: [Errno 32] Broken pipe.

The minimal step to reproduce the same has been shown below while using the lazy listener it waits for 10 seconds before responding back.

Reproducible in:

from chalice import Chalice, Response
from slack_bolt import App
from slack_bolt.adapter.aws_lambda.chalice_handler import ChaliceSlackRequestHandler

bolt_app = App(process_before_response=True)
app = Chalice(app_name='chalice_app_name')
slack_handler = ChaliceSlackRequestHandler(app=bolt_app, chalice=app)


@bolt_app.event("message")
def handle_message_events(body, logger):
    logger.info(body['event']['text'])


def respond_to_slack_within_3_seconds(ack):
    ack("Accepted!")


def say_it(say):
    time.sleep(10)
    say("Done!")


bolt_app.event("member_joined_channel")(
    ack=respond_to_slack_within_3_seconds, lazy=[say_it]
)


@app.route(
    "/slack/events",
    methods=["POST"],
    content_types=["application/x-www-form-urlencoded", "application/json"],
)
def events() -> Response:
    return slack_handler.handle(app.current_request)

The slack_bolt version

slack-bolt==1.9.1 slack-sdk==3.11.1

Python runtime version

Python 3.6.15

OS info

Ubuntu 20.04.3 LTS

Steps to reproduce:

  1. While handling of any Slack event (e.g. handle_member_joined event)
  2. Use lazy listener and wait for more than 3 seconds before responding back to Slack

Expected result:

Since the event is acknowledging the Slack within 3 seconds irrespective of the lazy listener function time, it should have processed the same.

Actual result:

s1 s2

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.

Contributor Guide