전장연 알리미
만약에 모든 지하철 호선을 타도 출근 시간이 똑같다면 어떤 지하철을 탈 것인가?
"음.. 곧 도착하는 지하철을 먼저 타지 않을까요?"
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/009.gif)
맞는 말이다. 물론 전장연 아침 지하철 승하차 시위가 일어나기 전 까지는 말이다.
그렇다면 정답은
"시위를 하지 않는 호선의 지하철을 타는 것"이, 지금 시대에 정답이다.
며칠 전까지 사당에서 출근해서 2호선과 4호선 중에 4호선만 고집하다 출근이 늦어진 나 때문에 만든 건 절대 아니라고 말하지 않는다.
1편을 보지 않았다면 먼저 보고 오기 바란다.
전장연 알리미 (feat. 지하철 뭐 안 타지?) - 1
전장연 알리미 만약에 모든 지하철 호선을 타도 출근 시간이 똑같다면 어떤 지하철을 탈 것인가? "음.. 곧 도착하는 지하철을 먼저 타지 않을까요? 맞는 말이다. 물론 전장연 아침 지하철 승하차
junnyhi.tistory.com
프로세스
1. 토큰 갱신
2. 나에게 메시지 전송
1. 토큰 갱신하기
카카오 토큰
- 1편에서 말한 토큰 만료 문제를 해결하는 것은 매우 간단하다.
- 일단, 카카오에서 처음 제공하는 토큰은 아래 2 가지로 구성되어 있다.
각 토큰은 만료 시간을 가지고 있다
- Access Token : 6시간
- Refresh Token : 2개월
전장연 알리미 같은 경우, 하루에 한 번만 돌리기 때문에 다음날에는 무조건 토큰이 만료되어 있다.
- 따라서 Acees Token을 갱신시켜야 하는데, 방법은 Refresh Token에 있다.
- 결론적으로는 보조 열쇠로 메인 열쇠를 계속 갱신시킬 수 있는 것이다.
- Refresh Token은 만료가 얼마 안남은 경우, response에 담겨 온다고 한다.
간단하게 표현하자면 아래 그림 정도?..
코드는 그닥 어려운 내용이 없기 때문에 굳이 따로 포스팅하지 않는다.
GitHub - heohyunjun/NDA_notice_with_github_action
Contribute to heohyunjun/NDA_notice_with_github_action development by creating an account on GitHub.
github.com
매일 새벽에 메시지 전송하기 (Github Acrtion을 곁들인)
코드를 Public으로 공유하고 싶다 & Github Action 사용하고 싶다. & API KEY는 노출하기 싫다.
- 라고 삼박자가 맞는다면 Github Secrets를 사용하면 된다.
Main.py 코드를 보면 아래 처럼 환경변수를 가지고 오는 부분이 있다.
api_key = os.getenv('REST_API_KEY')
refresh_token = os.getenv('REFRESH_TOKEN')
그럼 이 값들을 어디서 가져오냐면
- 개별 Repo에서 secrets Key를 등록해서 yaml에서 설정하면 된다.
- 아래 env부분에서 다음과 같이 설정한다. " {코드에서 호출할 변수명} : {{ secrets. 시크릿에서 등록한 키 이름 }}
name: nda_notice
on:
schedule:
- cron: '00 17 * * *'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v3
with:
python-version: "3.9"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Run test.py
run: |
python main.py
env:
TOKEN_FOR_ACTION: ${{ secrets.TOKEN_FOR_ACTION }}
REST_API_KEY: ${{ secrets.REST_API_KEY }}
REFRESH_TOKEN: ${{ secrets.REFRESH_TOKEN }}
그럼 매일 새벽 1시에 실행하려면?
- yaml에서 on.schedule.cron에서 시간 설정을 하면 된다.
- cron 은 UTC 기준이다.
- 즉, 아래는 17 : 00분, 한국 시간은 +9시간을 한 오전 1시가 된다.
on:
schedule:
- cron: '00 17 * * *'
"""
┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of the month (1 - 31)
│ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
│ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT)
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
* * * * *
"""
그럼 이제 매일 새벽 1시마다 오늘의 전장연 알림을 볼 수 있겠군?
결론은 이것만으론 "못한다"
다 하고 나서 깨달은 사실인데 Github action의 Public IP를 고정할 수 없는 게 문제다.
그게 왜 문제임?
- KaKao Developmnet에서 호출할 IP를 등록해야 하는데, IP가 계속 바뀌니 뭐..
그럼 무료 호스팅 서버에 올리 세...
- 갈! 무료 호스팅은 더 재밌는 걸 하기 위해 남겨 두고 로컬에서 돌리든가 할 예정이다.
Reference
'MLOps > Development' 카테고리의 다른 글
Dag를 알고 있는 녀석은?(K8sExecutor & K8sPodOperator) (0) | 2023.03.21 |
---|---|
효율적인 대규모 크롤링 시스템 운영을 위한 Fargate on EKS 적용하기 - 2편 (2) | 2023.03.09 |
효율적인 대규모 크롤링 시스템 운영을 위한 Fargate on EKS 적용하기 - 1편 (2) | 2023.02.25 |
[티끌모아 빅데이터] 나의 방문 일지 - 제 1편 : 티끌의 시작 (0) | 2023.02.17 |
전장연 알리미 (feat. 지하철 뭐 안 타지?) - 1 (0) | 2023.01.08 |