건국대학교 종강시를 크롤링하며 겪었던 문제들을 적어보고자 한다. 먼저, 처음에는 대학과 학과 선택을 기준으로 나오는 강의 리스트들의 정보만 크롤링하려 했고, 이는 준수한 속도를 내었기에 멀티쓰레딩에 대한 고려는 하지 않았다. 하지만, 강의계획서 안에 있는 수강 신청 유의 사항도 조사하고자 했고, 팝업창 기능까지 추가하는 순간 속도가 너무 느려졌다. 마침, AI 해커톤에서 데이터를 처리할 때 멀티쓰레딩을 했던 경험이 있었고, 속도가 매우 빨라졌었다. 물론 selenium이 thread-safe는 아니어서 의미가 없을 것은 대강 알고 있었지만, 궁금해서 한번 해보기로 했다.먼저, 멀티쓰레딩을 하기 위해 기존 코드에서 멀티쓰레딩에 맞는 구조로 바꿔주고, 파이썬의 threading 라이브러리를 사용했다.일단 해..
Python
분명 로컬에서 실행시킬 때 잘되다가 배포할 때는 작동이 왜 안 되는지 궁금해서 찾아봤다. if __name__ == '__main__': 먼저, 이 코드를 이해하는 것이 중요하다. if __name__ == '__name__' .py파일에는 __name__이라는 숨겨진 변수가 있다. 이 변수는 모듈의 이름을 가지고 있는 변수로 코드가 실행되고 있는. py파일의 이름을 가지고 있는 변수이다. 다음 두 파일이 있다고 해보자. #app1.py print("app1.py 이름 : ", __name__) #app2.py import app1 print("app2.py 이름 : ", __name__) 그리고 app2.py 파일을 실행시켰을 때 app1.py는 import 되고 자동으로 실행되므로 다음과 같이 출력된..
처음 beanstalk으로 배포를 하려는데 많은 어려움이 있었다. 그래서 했던 실수들을 정리했다. 1. beanstalk구조 확인 문제 애초에 배포가 안되고, 빨간 느낌표가 떴다. 원인 그냥 flask앱 파일을 압축해서 올리려 했다. 하지만 beanstalk에 맞는 파일 구조가 있었다. 해결 flask앱 이름을 app에서 application으로 바꾸고 파일 구조를 맞췄다. 2. 파이썬 버전 확인 문제 awsebcli를 이용하여 배포하려는데 eb init 명령어를 치니 자꾸 아래와 같은 에러가 떴다. ... ModuleNotFoundError: No module named 'imp’ 원인 beanstalk은 파이썬 버전이 3.7, 3.8, 3.9, 3.11일 때만 지원되는데, 사용 중인 파이썬 버전이 3..
flask 앱을 배포하는 방식은 두 가지가 있다. aws eb cli를 이용한 배포 1. 먼저 aws eb cli를 설치한다. pip install awsebcli 2. 이름이 virt 인 가상 환경을 만들어 활성화 한다. virtualenv virt source virt/bin/activate (virt) ~ $ 가상환경 사용하는 이유 컴퓨터 전체에 깔려 있는 모든 pip list가 들어가면 안 되고, 그렇다고 딱 import 한 것만 들어가도 의존성 때문에 안됨. 3. pip install 이용하여 flask 설치 pip install flask 4. pip freeze 를 사용하여 설치된 라이브러리 조회 pip freeze 5. 가상환경에서 개발 중인 프로젝트의 중요한 라이브러리가 포함되어 잇는지 ..