본문 바로가기

프로그래밍/Pyton.6

[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.
[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.
[PyCharm] Method 'method' may be 'static' 해결 Python에서 Class 선언 시 아래와 같은 오류가 발생하는 경우가 있습니다. 원인 self를 호출하는 로직이 없어서 발생하는 경고 문구입니다. 해결 1 (# noinspection PyMethodMayBeStatic) # noinspection PyMethodMayBeStatic def method(self): return "result" 위와 같이 경고 제거를 해주는 방법이 있습니다. 해결 2 (self 호출) def method(self): self.do_something() return "result" 위와 같이 self를 통해 무언가 행위를 해주는 방법이 있습니다. 참고 : 링크 2022. 6. 9.
[Pyton] 프로젝트 패키지 한번에 설치 하기 프로젝트 개발 중에 설치했던 많은 패키지를 한 번에 관리할 수 있는 방법을 설명합니다. 1. 설치된 패키지 목록 기록 > pip freeze requirements.txt 2. 기록된 패키지 목록들 설치 > pip install -r requirements.txt 위의 두 명령어를 통해 설치된 파이썬 패키지를 손쉽게 관리할 수 있다. 2022. 6. 8.