nlp 과제를 하다보니 cv 과제를 할 때 보다 특정 사이트에서 데이터를 가져오는 작업을 하는 일이 많아졌다.
그런데 수천개 페이지 이상의 자료를 크롤링하다보니 처음에 예상하지 못했던 에러가 발생하는 일이 잦았다.
밤새 수천 개쯤 걸어둔 작업이 완료되었을거라 기대하고 아침에 확인했을 때, 열 개쯤 돌아가다 멈춘 걸 보고 좌절 ㅠㅠ.
을 반복해서 겪다보니 에러 발생시 폰으로 알림을 받고 싶어졌다.
슬랙봇이 비교적 쉽게 이런 일을 해준다고 해서 검색.
준비물 : 슬랙 아이디와 슬랙 워크스페이스
https://api.slack.com/messaging/webhooks
1. 슬랙앱 만들기 : 이전에 만든 적이 없다면, 아래 주소에 가서 새로운 슬랙 앱을 만든다. from scratch (처음부터 만들기)를 선택해서 앱 네임 만들고, 알림 오기 원하는 워크 스페이스를 선택해서 앱을 만들어준다.
https://api.slack.com/apps?new_app=1
2. 내가 만든 슬랙앱으로 들어가서 인증 토큰 복사 & 권한 영역(OAuth Scope) 선택
권한선택에서 incoming-webhook과 chat:write 설정 (알림만 받으면 되므로)
3. 워크스페이스에서 채널 ID (채널에 메시징할 거라면) 또는 유저 ID 확인하기 (나만 DM으로 알림 받을 거라면)
채널 ID 는 원하는 채널 이름에서 우클릭> 채널 세부정보 열기 선택하면 보이고,
유저 ID는 유저 프로필에서 더보기클릭> 멤버ID 복사 를 하면 된다.
4. slack_sdk를 활용해 메세지를 보내는 함수를 만든다.
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
def send_message_to_channel(slack_token, channel, message):
'''
parameters:
slack_token = ''
channel = '' #채널ID, 유저ID모두 channerl 파라미터
message = '' #내가 보내고 싶은 에러메시지
'''
client = WebClient(token=slack_token)
try:
response = client.chat_postMessage(channel=channel, text=message)
assert response["message"]["text"] == message
except SlackApiError as e:
assert e.response["ok"] is False
assert e.response["error"]
print(f"Got an error: {e.response['error']}")
5. 에러가 발생하면 알람이 오길 원하는 곳에 만든 함수를 호출한다.
참고:
https://cosmosproject.tistory.com/394
https://github.com/taptorestart/python-examples/blob/main/packages/slack_sdk/message.py
'Etcs' 카테고리의 다른 글
2022 2학기 방송통신대학 컴퓨터 과학과 출석대체시험 시험범위 (0) | 2022.11.19 |
---|---|
Codecademy 50프로 할인 코드 - 10주년 기념 행사중이라고 (0) | 2021.08.19 |
Codecademy 유료 결제 할인코드 21년 여름 할인코드 (0) | 2021.07.20 |
프로그래밍 독학 사이트 코드카데미 codecademy에서 왕초보가 시작하기 좋은 코스 추천 (0) | 2021.02.08 |