(완료)1# Python 으로 지출관리 사이트에서 모든지출 데이터 xlsx 파일 뽑아내고 Zapier로 구글시트에 업데이트하기 (Using Python, crawling and exporting company wide expenses data with Xlsx file. Update a Google sheet from this Xlsx file with Zapier.)
(완료) 2# Python 으로 지출관리 사이트에서 모든지출 데이터 xlsx 파일 뽑아내고 Zapier로 구글시트에 업데이트하기 (Using Python, crawling and exporting company wide expenses data with Xlsx file. Update a Google sheet from this Xlsx file with Zapier.)
위 포스팅 내용 대로,
1. python을 통해 selenium 모듈로 crawling을 해서 xlsx 파일을 이메일로 받고
2. xlsx 파일은 Zapier 라는 노코드 툴에서 Email parser by Zapier 와 2개의 Zap 으로 처리해서 구글시트에 업데이트를 했다.
하지만 계속 실시간 데이터를 유지하는게 필요하다.
그럼 이제 추가적으로 이제 이걸 딜레이 시간 을 포함해서 정기적으로 실행되도록 해보자.
딜레이가 Zapier에서 10분 나머지 작업이 진행되는데 2분 정도로 총 12분 걸리는 것으로 확인을 했다.
그리고 나의 경우엔 월요일부터 금요일까지, 아침 7시 30분 부터 저녁 6시 00분까지 30분 간격으로 업데이트 되도록 하겠다.
딜레이를 고려한다면 매 시 48,18분에 python 코드가 돌아가면 얼추 정각에 완료되는 거군!
그러기 위해서는 cron 이라는 리눅스 스케줄러를 사용하려고 한다.
1. terminal 을 열고 sudo apt install cron 으로 crontab을 설치
2. crontab -e 명령어로 VI편집기 오픈
3. i 를 눌러서 insert mode로 전환
4. 아래 명령어 입력
48,18 7-17 * * 1-5 /usr/local/bin/python3.10 /Users/ivan/PycharmProjects/spendit/main.py
5. esc로 insert mode 나가고
6. :wq 로 저장 및 종료하면 끝!
부가 설명
crontab 파일에서 cron 작업을 추가할 때, 작업이 실행되는 시간을 지정해야한다. 시간은 다음과 같은 형식으로 지정.
* * * * * command to be executed - - - - - | | | | | | | | | +----- day of the week (0 - 6) (Sunday = 0) | | | +------- month (1 - 12) | | +--------- day of the month (1 - 31) | +----------- hour (0 - 23) +------------- min (0 - 59)
이 형식에서 *는 "모든 값"을 의미한다. 예를 들어, 매 분마다 작업을 실행하려면 *를 사용 하면 된다. 작업을 실행할 특정 시간이 있다면 해당 값을 지정한다.
예를 들어, 매주 월요일 오전 3시에 스크립트를 실행하려면 다음과 같이 작성할 수 있다.
0 3 * * 1 /usr/bin/python /home/user/myscript.py
시간 값은 스페이스로 구분되며, 특정 값을 지정하거나 범위를 지정할 수 있다. 예를 들어, "1시부터 5시까지 매 30분마다"를 지정하려면 다음과 같이 작성할 수 있다.
*/30 1-5 * * * /usr/bin/python /home/user/myscript.py
*/30은 "매 30분"을 의미하고, 1-5는 "1부터 5까지"를 의미한다다. /usr/bin/python /home/user/myscript.py는 실행할 명령어이므로 적절하게 파일 path로 수정해서 사용해야한다..
시간 값이 설정된 후 crontab 파일을 저장하면 작업이 스케줄링되는데 crontab -l 명령어를 사용하여 현재 사용자의 cron 작업 목록을 확인할 수 있다.
이로써 전사 지출을 트래킹하기가 한결 쉬워졌다. :)
p.s. 내 맥북이 전원케이블에 연결되어 있지 않은 잠자기 상태이거나 전원이 꺼져있는 경우에는 작동하지 않는다. 이걸 해결하기 위해서는 서버가 필요한데 아직은 불필요해보여서 일단 이대로 유지하고 다음에는 Docker 같은 서비스를 활용하는 내용도 포스팅 해보겠다.
댓글
댓글 쓰기