Python (96) 썸네일형 리스트형 Python: script내의 argument(인자) 받는 함수 실행하기 # python -m script_path method args 예제 코드 if __name__ == "__main__": import sys with Database() as db: if len(sys.argv) > 1: method_name = sys.argv[1] method = getattr(db, method_name, None) args = sys.argv[2:] # Get additional arguments if method is not None and callable(method): method(*args) # Pass the arguments to the method el.. Python: script 실행시 상위 경로 인식 못하는 문제 # -m option - a.py- b_dir - b.py 위와 같은 파일 구조로 되어있고, b.py에서 a.py에 있는 a_url을 import 해서 쓰는 경우 # b.pyfrom a import a_url 위와 같은 상황에서 VS code의 'Run Python File' 버튼을 누르거나, python b.py 명령어로 실행시키면,No module named 'a' 라는 오류가 나온다.또는 상위 경로에서python a.b 명령어를 실행하면can't open file ... [Errno 2] No such file or directory 오류가 발생한다. 이런 경우에는 a.py가 있는 경로에서 -m 옵션을 주고 실행하면 된다.python -m a.b Pydantic: Settings with BaseSettings # .env Pydantinc에서 제공하는 pydantic_settings.BaseSettings를 통해서, 환경설정 값들을 정할 수 있는데..env 파일이 없거나,개발환경에서만 쓰이거나 개인 프로젝트에서만 쓰이는 .env 파일 안에 있지 않은, 개별적인 설정 값들을 사용할 때 유용하게 쓸 수 있다. 설치: pip install pydantic-settings 아래와 같이 settings.py와 .env 파일이 있다고 하자.# settings.pyfrom pydantic_settings import BaseSettingsclass Settings(BaseSettings): ATTR_1 = "a" ATTR_2 = "b" # .envATTR_1 = "C" 프로그램 실행시 Settings의 ATTR_1 값은 .. Python: name mangling 된 메소드 오버라이딩 # __method # Python 클래스에서 언더바 두개가 붙는 메소드는 private하게 취급이 된다. class Base: ... def __test_method(self) 와 같이 선언된 __test_method의 경우, 메소드 명이 변경되는 name mangling이 일어난다.name mangling이 되면 __test_method로 선언한 명칭이 변경이되기 때문에,Base를 상속받은 다른 클래스에서 __test_method라고 메소드 선언을 해도 오버라이딩이 일어나지 않는다. 이와 같이, 다른 곳에서 쉽게 오버라이드 되지 않도록 일종의 예방 차원에서 __ 형태를 쓸 수 있다. 그렇지만 외부라이브러리 등을 사용하는 경우에 name mangling된 메소드를 오버라이드 할 상황이 생긴다.(예를 들어 특정 wa.. Python: 동기, 비동기 함수 여부에 상관없이 실행하기 # inspect.iscoroutinefunction 함수를 인자로 받아서, 해당 함수가 동기, 비동기 중 어떤 방식으로 선언되어 있는지는 먼저 판단하고,거기에 맞게 함수를 실행하면 된다. 파이썬 내장 라이브러리인 inspect 내의 iscoroutinefunction 함수를 이용 함수명 대로, coroutine 여부를 판단해준다 async가 붙은 함수: is coroutine function? yes -> inspect.iscoroutinefunction(func): True async 붙지 않은 함수: is coroutine function? no -> inspect.iscoroutinefunction(func): False 예제 코드import inspectimport asynciodef is_async_function(func): re.. FastAPI + SQLAlchemy: DB Connection이 지속적으로 생기는 문제 FastAPI는 일반적으로 SQLAlchemy와 함께 사용하며,다수의 커넥션풀을 유지하기 위해서 QueuePool을 사용한다.(비동기 데이터베이스 라이브러리 사용시에는 QueuePool이 아닌 async에 맞는 풀 사용)# database.pyfrom sqlalchemy import create_enginefrom sqlalchemy.pool import QueuePoolfrom sqlalchemy.orm import sessionmakersync_engine = create_engine( SYNC_DATABASE_URL, poolclass=QueuePool, pool_size=20, max_overflow=5, pool_timeout=30, pool_recycle=360.. aiohttp: async requests code example install: pip install aiohttp 다수의 request를 비동기적으로 요청하기 (예제에서는 1000번) - put 요청 기준 - post도 동일한 방식 (메소드만 put -> post 변경) import aiohttpimport asyncioasync def send_put_request(session, url, data, headers): async with session.put(url, json=data, headers=headers) as response: return response.status, await response.text()async def main(url, data, headers): async with aiohttp.ClientSession.. FastAPI + SQLAlchemy: connection pool log 찍기 # Pool 커스텀 https://github.com/Junanjunan/g6/commit/709b910470c6c216f5e7d5870f1403095b7ef44e 로그 생성용 커스텀 커넥션 풀 설정 · Junanjunan/g6@709b910Junanjunan committed May 3, 2024github.com 이전 1 2 3 4 ··· 12 다음