본문 바로가기

Python7

[Python] Uvicorn 일자별 로그 쌓기(with. FastAPI) Python의 ASGI(Asynchronous Server Gateway Interface) web server인 Uvicorn을 활용하여 서버를 실행 중, 일자별로 로그 파일을 생성하여 쌓는 방법을 기록합니다. 1. log.ini 파일 생성 [loggers] keys=root [handlers] keys=logfile,logconsole [formatters] keys=logformatter [logger_root] level=INFO handlers=logfile, logconsole [formatter_logformatter] format=[%(asctime)s.%(msecs)03d] %(levelname)s [%(thread)d] - %(message)s [handler_logfile] class.. 2022. 7. 26.
[Docker] Docker 이미지 생성 및 자동 배포(FastAPI 와 Gitlab CI/CD를 곁들인) Python 프레임워크인 FastAPI로 작성된 API 서버를 Gitlab CI/CD를 이용하여 Docker 이미지로 자동 빌드, 배포하는 방법을 기록합니다. 0. 환경 및 실행 흐름 - 개발 환경 : Windows 10 / Python 3.10 / FastAPI 0.72.0 - 배포 서버 OS : Ubuntu 20.04.3 LTS / Docker 20.10.12 Community 1. Docker에 Gitlab-Runner, DinD Container 실행 # 1. Gitlab-Runner Image pull sudo docker pull gitlab/gitlab-runner:latest # 2. Check Image sudo sudo docker image ls -a # 3. Create Gitlab.. 2022. 7. 18.
[Python] requests 사용시 SSL 서명 오류 Python의 requests 모듈을 사용하는 중 SSL 인증서 오류가 발생하여 해결법을 기록합니다. 오류 현상과 예상 원인 SSL : WRONG_SIGNATURE_TYPE 에러로 인해 Max retries까지 연결을 시도한 후 실행이 종료되었습니다. HTTPSConnectionPool(host='???', port=443): Max retries exceeded with url: /? (Caused by SSLError(SSLError(1, '[SSL: WRONG_SIGNATURE_TYPE] wrong signature type (_ssl.c:997)'))) 해결방법 예전 버전 TLS에 대한 Adapter를 만들어 session과 함께 사용하였습니다. import ssl import requests #.. 2022. 6. 28.
[Python] Java와 다른 예외처리(try-except) 기존에 사용하던 Java와 다르게 동작하는 Python의 Exception 이후 처리에 대해 기록합니다. 문법과 기대 try: # 할 일을 하다가 do_someting() except Exception as e: # 실수가 생겼다! do_logging() finally: # 실수 했더라도 이건 해야해 do_must() # 실수는 처리했으니 계속해야지 do_continue() 위와 같은 코드에서, 결국엔 do_continue()를 실행해 나갈 것이라 기대했다. 그러나... 결과 try: # 할 일을 하다가 do_someting() except Exception as e: # 실수가 생겼다! do_logging() finally: # 실수 했더라도 이건 해야해 do_must() # 실수가 있었으니 이후의 것.. 2022. 6. 21.
[Python] Switch Case가 없어요 파이썬에 Switch Case구문이 없다... 때문에 JAVA의 invoke와 비슷한 getattr() 메서드를 활용하여 비슷한 동작을 하도록 구현하였다. 예제 class Switch: def __init__(self): self.do_someting() def do_switch(self, _type): # do_case_? 형태의 메서드를 호출 getattr(self, 'do_case_' + _type, lambda: 'Switch Fail!!')() def do_case_a(self): print('Call case A') def do_case_b(self): print('Call case B') 위와 같이 클래스를 생성한후, do_switch메서드 호출과 파라메터를 통해 do_case로 시작되는 메.. 2022. 6. 13.
[Pyton] 프로젝트 패키지 한번에 설치 하기 프로젝트 개발 중에 설치했던 많은 패키지를 한 번에 관리할 수 있는 방법을 설명합니다. 1. 설치된 패키지 목록 기록 > pip freeze requirements.txt 2. 기록된 패키지 목록들 설치 > pip install -r requirements.txt 위의 두 명령어를 통해 설치된 파이썬 패키지를 손쉽게 관리할 수 있다. 2022. 6. 8.