모델을 학습하면서 학습 완료가 되면 메일을 오게 할 수 있다는 방법을 예전에 들었었는데 그런게 있구나~하고 넘겼다가 필요성을 느껴 찾아보았다. 찾아보니 보안에 문제가 될 수 있다고 하길래 메일 대신 slack 알람을 받을 수 있는 방법에 대해서 찾아보았다.
(사실 혼자서 하다가 실패했지만 부스트캠프 멘토님이 마침 딱 알려주셨다! 감사합니다 멘토님🥳)
본론으로 들어가보자
1. 알림을 받을 워크스페이스 왼쪽 상단의 아래삼각형을 눌러 관리 - 앱관리를 들어간다.
2. slack app directory 에서 "수신 웹후크" 또는 "incoming webhooks"를 검색한 후 slack에 추가하기를 누른다.
3. 수신받을 채널을 선택하고 "수신 웹후크 통합 앱 추가"를 누른다.
이후 나오는 url을 저장하고 사용하면 된다.
만약 잊어버렸다면 2번의 두번째 사진에서 "구성"을 눌러서 내가 추가한 웹후크의 설정창에 들어가서 다시 확인할 수 있다.
또 해당창에서는 웹후크 설명, 이름, 사진 등을 추가하는 등의 커스터마이징이 가능하다.
4. alarm.py 생성
send_message_slack에 매개변수로 넘긴 string을 slack webhook로 보내주는 코드로, 3번째 줄 slack_webhook_url에 위에서 받은 slack webhook url을 넣어서 완성하면 된다.
import requests
slack_webhook_url = "put your link"
def send_message_slack(text: str) -> None:
payload = {
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": text,
},
},
],
}
# requests.post (WebhookUrl. SLACK_WEBHOOK_URL, json=payload)
requests.post (slack_webhook_url, json=payload)
if __name__ == "__main__":
send_message_slack(text="Model load completed")
5. alarm.py의 send_message_slack 호출하기
import가 필요하다면 추가하고, 아래와 같이 함수를 호출하면 된다.
매개변수를 안넘겨줘도 앞서 설정해놓은 기본 문구로 출력이 되나, 필요시 2번째 줄 처럼 원하는 메세지를 넣어서 출력할 수 있다.
send_message_slack()
send_message_slack(text="원하는 메세지")
출력 결과 아래와 같이 설정한 채널로 슬랙알림이 오는 것을 확인할 수 있다.
6. 선택 사항
위 과정을 통해 모델 학습이 완료되면 slack으로 알림이 오게되었다.
다만 나의 경우 모델 확습 완료 외에도 bus error, oom 등 에러가 날 때도 에러가 왔으면 좋겠다는 생각이 생겼다.
그래서 try except 문을 활용하여 학습이 완료나면 "Model Learning Completed"가 에러가 나서 종료가 되면 "Model Learning Failed"가 뜨도록 하였다.
try:
main(args)
send_message_slack(text="Model Learning Completed")
except:
send_message_slack(text="Model Learning Failed")
다만 이렇게 작성한 경우 에러 메세지가 뜨지 않기 때문에 에러메세지를 보고 싶다면 traceback을 활용해야한다.
'Setting' 카테고리의 다른 글
[GIT] Rebase를 이용하여 pr에서 특정 커밋 삭제하기 (0) | 2025.04.03 |
---|---|
Git 사용자 이름과 이메일 설정하기 (0) | 2023.06.08 |
파이썬 설치 경로 확인하기 (0) | 2023.04.12 |
[Linux] source ~/.bashrc 명령어 (0) | 2023.04.11 |
Conda activate가 되지 않을 때 PowerShell 실행 정책 바꾸기 (0) | 2023.04.07 |