일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- asgi
- IAC
- FastAPI
- intervals
- 자바스크립트
- Service
- EC2
- terraform
- K8S
- dockerfile
- 쿠버네티스
- POD
- WSGI
- docker
- event loop
- YAML
- IAM
- github
- leetcode
- EKS
- ebs
- Kubernetes
- elasticsearch
- asyncio
- Django
- Deployment
- Python
- DevOps
- ansible
- AWS
- Today
- Total
목록Python (15)
궁금한게 많은 개발자 노트
파이썬답게 코딩하기라는 책을 읽어보면서 기록할만한 문장이나 기억해두고 싶은 내용을 정리해보려 합니다. 우선 저자가 이 책을 통해 이야기하고 싶은 내용은 "내가 사용하는 프로그래밍 언어에 대해 관심을 갖자"라고 합니다. 그 이유 2가지 중 첫 째는 어떤 기술을 사용할 줄 알지만 왜 그런 기술이 있고, 어떻게 동작하는지를 모르는 경우가 많기 때문이고, 두 번째는 내가 익숙한 언어가 아닌 다른 언어로 프로그램을 만들 때 새로운 언어에 대한 깊은 이해 없이 내가 익숙한 언어의 코드 스타일로 작성하기 때문이라고 합니다. 프로그래밍의 본질적인 목적은 프로그램을 만드는 것. 즉 어떤 기능을 구현하는 것입니다. 목적을 달성하기 위해서는 언어만 사용할 줄 알면 되지만, 언어에 대한 깊은 이해가 없다면 결과물의 차이를 만..
FastAPI에서는 강력하고 직관적인 Dependency Injection system을 가지고 있습니다.사용하기에 쉽고, 개발자로 하여금 FastAPI를 사용해 다른 컴포넌트들과 통합하기에 유용하도록 설계되었습니다. Dependency Injection이란?"Dependency Injection" means, in programming, that there is a way for your code (in this case, your path operation functions) to declare things that it requires to work and use: "dependencies". And then, that system (in this case FastAPI) will take care..
SQLalchemy를 알아보기 전에 ORM의 개념에 대해 먼저 알아보려합니다. ORM(Object Relational Manager)은 객체-관계 mapping을 의미합니다. 객체 지향 프로그래밍 언어를 사용하여 호환되지 않는 type 시스템 간에 데이터를 변환하기 위한 프로그래밍 기술입니다. - 메모리에서의 클래스(객체 지향 프로그래밍)와 관계형 데이터베이스의 테이블은 서로 일치하지 않으므로 ORM을 통해 불일치를 해결합니다. 간단하게 요약하면, 애플리케이션을 만드려면 데이터가 필요합니다. 데이터는 데이터베이스에서 관리하고 있으므로, 데이터베이스에서 쿼리로 원하는 데이터를 가져오려면 원래 SQL Tool 사용이 필요했지만, 지금은 애플리케이션 안에서 sql의 동작을 대신해주는 ORM기능이 있다고 생각하..
[ Task 동시 실행 - asyncio.create_task() ] 위에서 이벤트 루프가 태스크들을 동시적으로(Concurrent, not Parallel) 실행한다고 설명하였다. 그런데 사실 asyncio.run() 함수는 기본적으로 하나의 태스크만을 생성하여 실행한다. 따라서 코루틴 체인 과정에서 추가적인 태스크를 생성하여 실행하지 않았다면 현재의 태스크가 중단되었을 때 이벤트 루프는 실행시킬 다른 태스크가 없게 된다. 태스크가 한 개라면 동시적인(Concurrent) 실행을 하는 것이 애초에 말이 되지 않는 것이다. ※ 여기서 말하는 동시 실행이란 Parallel이 아닌 Concurrent를 말한다. 즉, 엄밀한 의미의 동시가 아니라 여러 태스크들을 왔다 갔다 하며 한 쓰레드에서 실행하는 개념인 ..
asyncio에서는 coroutine과 event loop를 사용하여 비동기 프로그래밍을 지원합니다. 다른 언어에서와 마찬가지로 evnet loop는 task들을 loop를 돌면서 하나씩 실행시키는 역할을 합니다. 만약 실행된 task가 특정한 데이터를 요청하고 응답을 대기해야 한다면 이 task는 제어권을 다시 event loop에 넘겨줍니다. 제어권을 받은 event loop는 다음 task를 실행하게 되고, 응답을 받은 순서대로 task queue에 들어가고 재개되는 task들은 멈췄던 부분부터 다시 제어권을 가지고 작업을 마무리합니다. # 여기서 coroutine이 응답을 대기하는 상태에서 제어권을 event loop로 주는 용도로 await를 사용합니다. coroutine으로 task를 만들고,..