[Python] Jupyter Notebook에서 Slack 메시지 보내기

2021. 4. 28. 02:30 Python/Python 프로그래밍

쥬피터(Jupyter) Notebook에서 Slack 메시지를 보내는 방법

데이터 분석일을 하다보니 작업을 돌려놓고, 다른 업무를 보는 일이 많다.
여러개를 병렬적으로 돌려야 하다보니, 언제 어떤 작업이 완료했는지 알람을 받는게 필요했다.
일단 단계는 4단계로 크게 나누어 봤다.

  • sendlogto_slack 의 python 코드 작성
  • sendlogto_slack을 bashrc에 alias로 지정
  • ipython에서 alias를 추가하는 부분 코드 작성 및 startup 스크립트 작성
  • ipython에서 alias로 메시지보내기 사용

 

sendlogto_slack 파이썬 코드 작성하기

# -*- encoding: utf8 -*- 
 
def send_log_to_slack(text):
    channel = '<channel_name>'
    import datetime
    from slacker import Slacker
    token = "<token>"
    slack = Slacker(token)
    attachments_dict = dict()
    attachments_dict['pretext'] = text
    #attachments_dict['title'] = ""
    #attachments_dict['title_link'] = ""
    attachments_dict['fallback'] = text # "1급 비밀 메시지"
    #attachments_dict['text'] = text
    #attachments_dict['mrkdwn_in'] = ["text", "pretext"]  # 마크다운을 적용시킬 인자들을 선택
    attachments = [attachments_dict]
    slack.chat.post_message(channel=channel, text=None, attachments=attachments, as_user=False)

import sys
send_log_to_slack(sys.argv[1])

 

bashrc에 alias로 등록

bashrc에 아래 코드 추가 alias msg="python send_log_to_slack.py" $1 $ msg "THE END"

 

ipython에서 alias 추가 코드 작성 및 startup 스크립트 작성

  • /home/username/.ipython/profile_default/startup/alias.py
# /home/username/.ipython/profile_default/startup/alias.py

import subprocess

lines = subprocess.check_output('source bashrc; alias',shell=True).split(b'\n')
manager = get_ipython().alias_manager
for line in lines:
    line = line.decode("utf-8") 
    split_index = line.find('=')
    cmd = line[split_index+1:]
    alias = line[:split_index]
    cmd = cmd[1:-1]
    print ("ALIAS:{}\t\tCMD:{}".format(alias,cmd))

    manager.soft_define_alias(alias, cmd) 

 

ipython에서 alias로 메시지 보내기

In [ ]: msg "작업완료" In [ ]: text = "안녕하세요" In [ ]: msg $text

 

출처 : ourcstory.tistory.com/478?category=630693