Skip to content

Commit 0281ca8

Browse files
feat: remove async, keep stream
1 parent d9a804d commit 0281ca8

File tree

2 files changed

+6
-8
lines changed

2 files changed

+6
-8
lines changed

packages/slackBotFunction/app/handler.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
2. Processes async operations when invoked by itself to avoid timeouts
77
"""
88

9-
import asyncio
109
from slack_bolt.adapter.aws_lambda import SlackRequestHandler
1110
from aws_lambda_powertools.utilities.typing import LambdaContext
1211

@@ -42,10 +41,9 @@ def handler(event: dict, context: LambdaContext) -> dict:
4241
When subsequent actions or events are processed, this is looked up, and if it exists, then the pull request lambda
4342
is triggered with either pull_request_event or pull_request_action
4443
"""
45-
loop = asyncio.get_event_loop()
4644
# direct invocation bypasses slack infrastructure entirely
4745
if event.get("invocation_type") == "direct":
48-
return loop.run_until_complete(handle_direct_invocation(event, context))
46+
return handle_direct_invocation(event, context)
4947

5048
app = get_app(logger=logger)
5149
# handle pull request processing requests
@@ -68,10 +66,10 @@ def handler(event: dict, context: LambdaContext) -> dict:
6866

6967
# handle Slack webhook requests
7068
slack_handler = SlackRequestHandler(app=app)
71-
return loop.run_until_complete(slack_handler.handle(event=event, context=context))
69+
return slack_handler.handle(event=event, context=context)
7270

7371

74-
async def handle_direct_invocation(event: dict[str, Any], context: LambdaContext) -> DirectInvocationResponse:
72+
def handle_direct_invocation(event: dict[str, Any], context: LambdaContext) -> DirectInvocationResponse:
7573
"""direct lambda invocation for ai assistance - bypasses slack entirely"""
7674
try:
7775
# validate request structure using type guard
@@ -84,7 +82,7 @@ async def handle_direct_invocation(event: dict[str, Any], context: LambdaContext
8482
# shared logic: same AI processing as slack handlers use
8583
from app.services.ai_processor import process_ai_query
8684

87-
ai_response = await process_ai_query(query, session_id)
85+
ai_response = process_ai_query(query, session_id)
8886

8987
return create_success_response(
9088
text=ai_response["text"],

packages/slackBotFunction/app/services/ai_processor.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
logger = get_logger()
1414

1515

16-
async def process_ai_query(user_query: str, session_id: str | None = None) -> AIProcessorResponse:
16+
def process_ai_query(user_query: str, session_id: str | None = None) -> AIProcessorResponse:
1717
"""shared AI processing logic for both slack and direct invocation"""
1818
# reformulate: improves vector search quality in knowledge base
1919
reformulated_query = reformulate_query(user_query)
@@ -29,7 +29,7 @@ async def process_ai_query(user_query: str, session_id: str | None = None) -> AI
2929
session_id_from_response = bedrock_response.get("sessionId")
3030

3131
# iterate through bedrock stream events to build complete response
32-
async for event in bedrock_response["stream"]:
32+
for event in bedrock_response["stream"]:
3333
logger.info(
3434
"[New] response from bedrock",
3535
extra={"session_id": session_id_from_response, "event": event},

0 commit comments

Comments
 (0)