전장연 알리미
만약에 모든 지하철 호선을 타도 출근 시간이 똑같다면 어떤 지하철을 탈 것인가?
"음.. 곧 도착하는 지하철을 먼저 타지 않을까요?"
맞는 말이다. 물론 전장연 아침 지하철 승하차 시위가 일어나기 전 까지는 말이다.
그렇다면 정답은
"시위를 하지 않는 호선의 지하철을 타는 것"이, 지금 시대에 정답이다.
며칠 전까지 사당에서 출근해서 2호선과 4호선 중에 4호선만 고집하다 출근이 늦어진 나 때문에 만든 건 절대 아니라고 말하지 않는다.
1편을 보지 않았다면 먼저 보고 오기 바란다.
프로세스
1. 토큰 갱신
2. 나에게 메시지 전송
1. 토큰 갱신하기
카카오 토큰
- 1편에서 말한 토큰 만료 문제를 해결하는 것은 매우 간단하다.
- 일단, 카카오에서 처음 제공하는 토큰은 아래 2 가지로 구성되어 있다.
각 토큰은 만료 시간을 가지고 있다
- Access Token : 6시간
- Refresh Token : 2개월
전장연 알리미 같은 경우, 하루에 한 번만 돌리기 때문에 다음날에는 무조건 토큰이 만료되어 있다.
- 따라서 Acees Token을 갱신시켜야 하는데, 방법은 Refresh Token에 있다.
- 결론적으로는 보조 열쇠로 메인 열쇠를 계속 갱신시킬 수 있는 것이다.
- Refresh Token은 만료가 얼마 안남은 경우, response에 담겨 온다고 한다.
간단하게 표현하자면 아래 그림 정도?..
코드는 그닥 어려운 내용이 없기 때문에 굳이 따로 포스팅하지 않는다.
매일 새벽에 메시지 전송하기 (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 |