alembic으로 migration을 하다 보면 이상한 코드가 먼저 나옴을 알 수 있습니다. 마이그레이션 파일을 관리할 때 먼저 생성된 파일이 위에 오면 편할 겁니다. 어떻게 하면 좋을까요? 예를 들어, 0001_xxx, 0002_xxx 순으로 오게 하고 싶다면요? 그렇게 하면 버전 관리가 보다 편해질 겁니다. alembic revision --autogenerate -m "init_script"를 쳐 보겠습니다. 그러면 앞에 fbe53.. 이 생성됨을 볼 수 있습니다. 랜덤하게 생성된 문자열이기 때문에 보기가 영 편하지 않습니다. 문서를 보면, context의 configure의 process_revision_directives는 "revision" --autogenerate 옵션일 때 트리거가 된다고..
웹/FASTAPI 검색 결과
fastapi에서 UploadFile을 이용하여 파일을 올리고 제한 검사를 서버단에서 하는 방법을 알아보겠습니다. 먼저 로컬에 파일을 올릴 것이므로 app.mount로 미디어 경로도 같이 설정해 줍니다. 참고로 요래 설정하면, 루트 프로젝트에 media 디렉토리가 있어야 동작합니다. 다음에 upload_file 함수입니다. file의 size 체크를 해서 2메가가 넘어가는 파일은 거부합니다. 그러기 위해, await file.read()를 호출한 다음에, content의 길이가 2메가가 넘는 경우 거부를 합니다. 그렇지 않으면, path 위치에 content를 씁니다. 다음에, get_user 함수입니다. 함수 이름이 이상한 거 같은 건 넘어갑시다. /upload를 부르면 2메가 이하인 파일을 업로드 하..
fastapi에서 backgroundtask는 다소 무거운 작업을 back ground로 돌릴 때 씁니다. 예를 들자면 이메일을 보내는 시간은 다소 깁니다. 그래서, 그냥 task에 등록만 해서 background에서 돌고 있는 무언가가 처리하게 하고, 204 response를 떨어트리는 식으로 쓰게 됩니다. 매우 무거운 작업은 다른 방식을 고려하는 편이 좋습니다. main.py 입니다. 천천히 보겠습니다. write_notification입니다. 다른 건 없고요. ti초동안 sleep를 하게 됩니다. 중간에, 프로세스의 id와 thread id를 찍습니다. 이는 background task가 실행될 때 마다 어떤 것이 달라지는지 trace 하기 위함입니다. async def가 아니라, 그냥 def로 호..
db에서 connection pool을 사용한다는 이야기는 많이 들어보셨으리라 생각합니다. fastapi에서 db를 사용할 때, sqlalchemy를 많이 쓰곤 해요. 엔진을 초기화 할 때, 연결 풀링을 하기 위해 Queuepool과 같은 것을 많이 설정하는 편입니다. 그냥 Nullpool로 받을 때와, Queuepool과 같이 커넥션을 들고 있을 때 응답 속도가 유의미하게 차이가 난다. 라는 말은 많이 들으셨을 듯 한데요. 이것은 실습으로 때워보도록 하겠습니다. 주의해야 할 점은 이 코드는 실습용으로 제작했다는 것입니다. 절대로 production에 적용하기 위해서 참고하지 말아주세요. 대신에 아. 이런 옵션이 있었구나와, connection pool이 어떤 역할을 하는 구나. 정도만 짚고 넘어가셔도 ..
안녕하세요. 이번 시간에는 fastapi에서 path parameter를 활용하는 방법을 알아봅시다. 그리고 조심해야 할 점도 같이 알아보겠습니다. crud 정도는 많이 익숙하실 겁니다. 예를 들어, 게시판에서 글을 쓰는 행동을 생각해 봅시다. 우리가 글을 쓰면 어딘가에 글에 대한 데이터가 저장될 거에요. 이 글을 '자원'이라고 하겠습니다. 글들이 여러 개 있을 때, 그 중 하나를 특정지을 수 있을 겁니다. 즉, 특정한 자원에 접근하는 방법을 알려주기 위해 path parameter를 쓴다고 생각하시면 되겠습니다. 주소를 봅시다. /users/{user_id}가 있습니다. user들이라는 자원이 있습니다. 특정한 유저에는 어떻게 접근을 해야 할까요? 고유 id값을 주면 됩니다. 고로 저는 GET /use..
최근댓글