Slack 앱을 만드는 것은 재미있습니다! 그런데 당신의 앱은 신뢰할 수 있나요?
직접 빌드하는 동안 인기 있는 오픈 소스 Slack 앱에서 두 가지 일반적인 문제를 발견했습니다.
많은 앱이 이벤트를 동기적으로 처리하므로 시간 초과가 발생할 수 있습니다. Slack은 3초 이내에 응답을 기대하지만 앱이 AI/RAG 파이프라인을 트리거하는 경우 AI 모델이 응답을 생성하는 데 더 오랜 시간이 걸릴 수 있습니다(예: 새로운 o1 모델은 "생각"하는 데 최대 10초가 걸릴 수 있음). Slack의 모범 사례에서는 이벤트를 대기열에 추가하고 비동기식으로 처리하는 것을 권장합니다.
많은 앱이 중복 이벤트를 처리하지 않습니다. 앱이 응답하지 않으면 Slack은 이벤트를 세 번 다시 시도합니다. 적절하게 처리하지 않으면 재시도로 인해 앱에서 중복되거나 일관되지 않은 응답이 발생할 수 있습니다. 이는 나쁜 사용자 경험으로 이어집니다.
오픈 소스 경량 내구성 실행 라이브러리인 DBOS Python을 사용하여 이 문제를 해결하는 방법은 다음과 같습니다. 기성 AI/RAG 기반 Slack 앱 데모(LlamaIndex의 llamabot)에서 시작하여 가볍게 수정되고 주석이 달린 기능을 사용하여 각 수신 메시지가 DBOS 워크플로를 시작하도록 했습니다.
메시지 발송 코드는 간단합니다.
@slackapp.message() def handle_message(request: BoltRequest) -> None: DBOS.logger.info(f"Received message: {request.body}") event_id = request.body["event_id"] # Use the unique event_id as an idempotency key to guarantee each message is processed exactly-once with SetWorkflowID(event_id): # Start the event processing workflow in the background then respond to Slack. # We can't wait for the workflow to finish because Slack expects the # endpoint to reply within 3 seconds. DBOS.start_workflow(message_workflow, request.body["event"])
워크플로가 백그라운드에서 시작되므로 내 앱이 Slack에 빠르게 응답할 수 있습니다. DBOS 워크플로는 일단 시작되면 항상 완료될 때까지 실행됩니다(비동기적으로 실행되는 경우에도 마찬가지). 따라서 메시지는 항상 안정적으로 처리됩니다.
메시지의 이벤트 ID를 워크플로의 멱등성 키로 사용하므로 DBOS는 이를 사용하여 각 메시지가 정확히 한 번 처리되도록 합니다.
제가 구축한 AI 기반 Slack 앱에 대한 자세한 내용은 이 GitHub 저장소에서 확인할 수 있습니다: https://github.com/dbos-inc/dbos-demo-apps/tree/main/python/llamabot
README에는 Slack 작업 공간에서 이 앱을 직접 사용하는 방법에 대한 자세한 지침이 포함되어 있습니다.
일반적으로 안정적인 애플리케이션을 어떻게 구축하시나요? 이 앱에 대한 피드백이 있나요? 꼭 알려주세요!
위 내용은 안정적인 Slack 앱 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 같은 작업에 적합합니다.

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

Python 3.6에 피클 파일로드 3.6 환경 보고서 오류 : modulenotfounderror : nomodulename ...

경치 좋은 스팟 댓글 분석에서 Jieba Word 세분화 문제를 해결하는 방법은 무엇입니까? 경치가 좋은 스팟 댓글 및 분석을 수행 할 때 종종 Jieba Word 세분화 도구를 사용하여 텍스트를 처리합니다 ...


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
