카테고리 없음

python 프로젝트 클라우드에 올리기(Render)

코딩연습중 2025. 3. 24. 09:10

학교 사이트를 크롤링하여 과제를 확인 후, 슬랙 봇으로 메시지를 보내는 기능을 파이썬으로 구현했는데 이걸 매일 아침 9시에 실행시키고 싶었다. 내 가상머신에 배포하면 가상머신을 내가 부팅시키지 않는 이상 실행시킬 수 없어서 안 됐고, AWS를 쓰자니 이 간단한 거 하나 돌리자고 괜히 리소스 할당하고 복잡하게 설정하고 싶진 않았다. 찾아보니 Render라는 클라우드 서비스가 있었는데 그냥 깃허브에 올린 프로젝트 가져와서 바로 배포할 수 있었다. 어차피 나만 쓰려고 만든거고 그냥 빨리 올려서 돌리고 싶었기 때문에 딱 적합하다 생각하여 Render에 올렸다.

 

Render 대시보드에서 Cron Job 만들기

  1. Render 대시보드 접속
    https://dashboard.render.com/
  2. 왼쪽 상단 "New +" → Scheduled Job 클릭
  3. 설정 입력
Name assign-alarm
Schedule 0 0 * * * ← 한국 시간 오전 9시
Runtime Python
Build Command pip install -r requirements.txt
Start Command python main.py
Region Singapore

Environment Variables 등록

  1. 아래쪽 Environment 섹션에 .env에 있던 값들 환경변수 등록

이렇게 등록 후 빌드했는데 빌드 실패.

 

ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory
'/C:/b/abs_.../aiobotocore...'

이런 에러 남.

requirements.txt 안에 Windows 경로가 섞여 있어 Render (리눅스 환경)가 인식 못 해서 생긴 에러.

 

그래서 기존 requirements.txt 삭제 후 새로 requirements.txt 생성해야했다.

rm requirements.txt
pip freeze --exclude-editable > requirements.txt

 

위와 같이 pip freeze 명령어로 생성할 수도 있지만 난 내가 직접 필요한 패키지만 추가했다.

slack_sdk
python-dotenv
selenium
webdriver-manager
beautifulsoup4

 

다시 git commit & push 하고 보니 build error는 나지 않았다. 

그리고 쿼리가 잘 실행되는지 테스트해보기 위해 run했다.

 

근데 코드 안에 분명 결과가 잘 나오는지 테스트해보기 위해 print문을 적어놨는데 로그에 빈 배열이 출력됐다.

그래서 코드에 각 단계마다 로그를 추가했다. 

출력된 로그를 확인해보니 원인은 다음과 같았다.

내가 직접 사이트에 접속했을 때는 태그 안 text의 값이 한글이었는데 render로 돌렸을 때는 태그 안의 text 값이 영어라서 문제가 생겼었다. 

위에서 Render에 프로젝트를 올릴 때 Region이 싱가포르였는데, 이 때문에 언어 설정이 영어로 세팅이됐나보다. 

그에 따라 코드를 수정하니 문제 없이 정상적으로 잘 동작했다.

 

 

이제 학교 사이트를 들어가지 않아도 매일 아침 9시에 핸드폰으로 과제 알림을 받을 수 있게 됐다.

 

 

https://github.com/choeunbin03/assign_alarm