일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Algorithm
- 백준
- 파이썬
- dockerfile
- 전문가를 위한 파이썬
- function
- IMAGE
- guru
- Container
- 동시성
- 코어 이더리움 프로그래밍
- Python
- Thread
- fluent python
- Network
- AWS
- RabbitMQ
- 러스트
- 블록체인
- 알고리즘
- Kubernetes
- BlockChain
- 이더리움
- Refactoring
- docker
- BAEKJOON
- rust
- 플랫폼
- Ethereum
- Fast API
- Today
- Total
글쓰기 | 방명록 | 관리 |
목록Python (17)
Victoree's Blog
1. 의존성 주입이란? 코드가 작동하고 사용하는데 필요한 종속성을 선언하는 방법이 있음 → 종속성을 코드에 넣는데 필요한 모든 작업을 처리할 수 있음 공통의 코드(중복 코드) 존재 시 데이터베이스 연결 보안, 인증, 등등 [ 간단한 예시 ] from fastapi import Depends, FastAPI app = FastAPI() async def common_parameters(q: Optional[str] = None, skip: int = 0, limit: int = 100): return {"q": q, "skip": skip, "limit": limit} @app.get("/items/") async def read_items(commons: dict = Depends(common_param..
1.Model Dict 1) wrapping/unwrapping @app.post("/user/", response_model=UserOut) async def create_user(user_in: UserIn): user_saved = fake_save_user(user_in) return user_saved user_in 객체는 Pydantic models 임 Pydantic models은 .dict()라는 함수가 있으며, model data를 dict로 리턴함 user_dict = user_in.dict() { 'username': 'john', 'password': 'secret', 'email': 'john.doe@example.com', 'full_name': None, } dict를 unwr..

1. Response Model 1) Response Model Basic 아래와 같은 함수의 response_model 옵션으로 원하는 모델을 설정하면 된다 @app.get() @app.post() @app.put() @app.delete() etc. 출력 데이터를 해당 객체로 변환 데이터 벨리데이션 수행 오픈 API 경로 작업에서 응답에 대한 JSON 스키마 추가 자동 문서화 시스템에 사용됨 출력 데이터를 모델의 데이터로 제한 2) Model In/Out password 같이 리턴되지 말아야하는 값은 UserOut이라는 클래스를 명시적으로 작성하여, 리턴될 때 해당 객체에 정의된 필드만 리턴되도록 구현할 수 있다. class UserIn(BaseModel): username: str password:..

1. Path Parameters 1) 순서 문제 from fastapi import FastAPI app = FastAPI() @app.get("/users/me") async def get_my_info(): return {"user_id": "the current user"} @app.get("/users/{user_id}") async def get_user(user_id: int): return {"user_id": user_id} 위 함수를 정의하는 순서가 중요함 get_user 와 get_my_info 의 순서가 변경되면, user_id의 값을 "me" 라고 생각해 /users/me도 user_id에 연결됨 2) 사전 정의 값 from enum import Enum from fastapi i..

FastAPI는 Python 기반으로 Flask와 같은 개발 편의성에 NodeJS, Go와 같은 성능과 안정성을 갖춘 Web Framework이다. 공식 페이지에서 언급하는 Key Feature는 다음과 같다. Fast / Fast to code / Fewer bugs / Intuitive / Easy / Short / Robust / Standards-based 특징은 다음과 같다. Starlette 프레임워크를 기반으로 한 비동기 API 서버 지원 Pydantic을 사용한 Data validation 지원 API Swagger, ReDoc 등을 사용한 API document 자동 생성 지원 NodeJS, Go와 대등할 정도로 매우 높은 성능 Python3.6+ Type Hinting 지원 Fast A..

AMQP What is AMQP 0-9-1? Advanced Message Queuing Protocol 클라이언트 어플리케이션들이 미들웨어 메세징 브로커와 통신할 수 있도록 하는 메세징 프로토콜 Brokers and Their Role 메세지 브로커들은 publisher(== producer)로부터 메세지를 전달받음 위 메세지를 consumer에게 라우팅해줌 AMQP 0-9-1 Model in Brief message는 exchange로 publish됨 message를 publish할 때, 다양한 속성(메타 데이터)를 지정할 수 있음 일부는 브로커에서 사용가능하나, 나머지는 메세지를 받는 어플리케이션에서 사용 exchange들은 바인딩되어 message 복사본들을 큐에 분배시킴 브로커는 큐에 있는 co..
Kombu [RabbitMQ with Python] → kombu 라이브러리를 기반으로 rabbitmq 큐에 원하는 (mcard 버닝이란) 테스크를 퍼블리시 하면, 큐에 mcard_burn이라는 키와 데이터, 리퀘스트 아이디가 인큐됨 Kombu란? 파이썬 메시징 라이브러리 메시지 브로커를 쉽게 사용할 수 있는 솔루션 다양한 메시지 브로커를 지원함 자동으로 인코딩과 정규화를 해줌 메시지 전송과 관련하여 예외처리가 잘 되어있음 커넥션이나 채널 오류가 있을 때에도 정상적으로 동작하도록 구현되어있음 amqplib의 불편한점들이 수정됨 carrot을 사용하고 있는 프로젝트를 쉽게 포팅할 수 있음 rabbitmq 에서 Exchange란? Queue에 전송되기 전에 거쳐가는 라우터 어떤 방식으로 메세지를 전달하냐에 ..