pythonanywhere는 파이썬에 맞는 최적(?)의 환경을 제공한다. 그래서 파이썬 웹프레임워크인 Django나 Flask 등으로 만든 웹사이트를 배포하기에 좋다. 하지만 pythonanywhere에 배포할 것을 고려하지 않고, 코드를 작성하면 이후 배포할 때에 많은 어려움을 겪게 된다. 필자도 이번에 간단한 웹페이지를 제작해서 pythonanywhere에 배포했다. 오늘은 pythonanywhere 웹사이트 배포 전 주의할 점, 3가지에 대해서 알아보도록 하겠다.

 

 

1. 정기 작업은 Tasks에 올린다

간단한 웹사이트이지만 데이터를 정기적으로 수집해서 업데이트 하는 작업이 필요했다. DB를 이용해도 좋지만, 간단한 작업이라 데이터를 pickle(피클)로 저장해서 사용했다. 문제는 이 코드를 Flask를 구동하는 main.py에 넣었는데, 해당 코드가 잘 작동하지 않는다. Thread를 이용해서 정기적으로 실행은 되는데, 웹크롤링을 할 때 네트워크 연결이 잘 되지 않는 듯 했다.

이에 방법을 찾아보다보니, 이런 정기적인 작업은 pythonanywhere Tasks탭을 이용하는 것이 좋다는 것을 알게 되었다. 시간이나 날짜별로 필요한 작업을 정기적으로 실행할 수 있는 메뉴로 여기에 코드를 등록하였더니 에러 없이 잘 동작하였다.

 

pythonanywhere 스케쥴 등록

 

 

2. Flask서버를 구동한 후에 html파일을 변경하는 것은 안 된다.

index페이지에 데이터를 업데이트해서 보여줘야 했다. 하지만, 데이터가 30분 동안 변경되지 않는데 매번 데이터를 불러와서 보여주는 것은 불필요해 보였다. 그래서 데이터를 포함한 index파일을 2개 만들고, 데이터가 업데이트될 때마다 해당 index파일을 완전히 변경하는 방법으로 코드를 작성하였다. 그런데 이를 pythonanywhere에 올려서 작동을 시키니 잘 작동하지 않았다. index파일을 변경했음에도 불구하고 변경된 내용이 반영되지 않았다.

pythonanywhere에서 Flask를 구동한 후에는 html의 내용을 변경하는 것은 반영이 되지 않는다. 변경이 되야 되는 내용이 있으면, 번거럽더라도 데이터를 불러와서 html페이지의 {{ 변수명 }}에 반영하여야 했다.

 

 

3. Flask main파일 등록시 주의점

pythonanywhere에 배포하기 위해 폴더를 만들고 파일을 모두 업로드한 후에 'New Web/App' 메뉴를 클릭한다. 이 때 설정을 몇 가지 해주는데 Flask를 구동할 main파일도 정해주어야 한다. 그런데 이전에 main.py파일을 업로드하고, 해당 메뉴에서 main.py로 구동파일을 정해주면 main.py파일이 새로 생성된다. 그래서 기본 파일 내용만 들어가 있는 파일로 바뀐다.

이를 해결하려면 신규 Web/App서비스를 만든 후에 구동파일(main.py)을 다시 업로드 해 줘야 한다.

 

pythonanywhere에 배포한 웹사이트

 


필자가 만든 웹사이트를 방문해보고 싶다면, 아래 url을 참조하기 바란다.
( 참조: https://stock.infoking.site )

 

4. pythonanywhere 레퍼럴

필자의 블로그를 통해 pythonanywhere에 대해 관심이 생겼다면, 아래 링크를 통해 이용해주기 바란다. 유료로 이용할 경우, 필자에게 약간의 혜택이 제공된다.

- pythonanywhere  바로가기

 

오늘은 이렇게 pythonanywhere 웹사이트 배포 전 주의할 점, 3가지에 대해서 알아보았다. pythonanywhere는 Flask를 이용해서 만든 웹페이지를 배포하기에 좋은 환경을 갖추었다고 생각한다. 하지만, pythonanywhere의 구조(?)를 알면 시행착오를 많이 줄일 수 있지 않을까 싶다. pythonanywhere에 웹사이트를 배포하고자 하는 분들에게 도움이 됐기를 바란다.

 

Recommendation 포스팅

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기