일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- guru
- Ethereum
- 블록체인
- Algorithm
- 러스트
- 이더리움
- 알고리즘
- Kubernetes
- 전문가를 위한 파이썬
- 백준
- function
- IMAGE
- 플랫폼
- BlockChain
- dockerfile
- Fast API
- AWS
- 코어 이더리움 프로그래밍
- Thread
- 파이썬
- Container
- Network
- Refactoring
- fluent python
- docker
- RabbitMQ
- Python
- BAEKJOON
- 동시성
- rust
- Today
- Total
글쓰기 | 방명록 | 관리 |
목록Python (7)
Victoree's Blog
7.1 Future Future은 비동기 작업의 실행 객체이다. future 객체는 concurrent.futures 라이브러리나 asyncio에서 future 객체를 이용할 수 있다. 이 두 Future 클래스 객체는 완료되었을 수도, 아닐수도 있는 지연된 계산을 표현하기 위해 사용된다. Future는 앞으로 일어날 일을 나타내고, 이 실행을 스케줄링하는 프레임워크만이 어떤 일이 일어날지 확실히 알 수 있기 때문에 동시성 프레임워크에서만 배타적으로 생성해야한다. 또한 Client에서 Future의 상태를 변경하면 안된다. 실행 여부를 체크하려면 done() 메소드를 호출함으로 알 수 있고, 일반적으로 클라이언트는 Future가 완료되었는지 물어보는게 아니라 callback으로 통지해주는 것을 요청한다...
Django나 FastAPI를 사용할 때, 슬며시 지나갔던 개념들 중에 WSGI와 ASGI에 대해 간단히 정리해보자. 1. WSGI WSGI는 web server gateway interface로 파이썬 스크립트가 웹서버와 통신하기 위해 만들어진 인터페이스로 CGI의 일종이다. CGI는 common gateway interface의 약자로, 서버와 어플리케이션간에 데이터를 주고받는 방식, 규율이라고 생각하면 된다. WSGI 의 예시로, gunicorn이나 uWSGI가 있는데, 이 녀석들은 Nginx나 Tomcat과 같은 웹서버의 http request를 해석(파싱)하여 어플리케이션단에 보내는 역할을 한다. 보통 uWSGI보다 gunicorn이 성능이 더 좋아서 많이 채택된다. Tomcat이나 nginx ..
코루틴을 알아가기 전에, 예에전에 대학시절에 공부했던 프로세스와 스레드와 관련한 내용을 잠시 잠깐 리뷰하고 가자. 6.1 프로세스와 스레드 Process는 실행중인 프로그램을 말하며, 최소 1개의 thread로 구성되고 thread 단위로 스케줄링된다. 프로세스는 create, ready, run(cpu나 메모리같은 자원을 받음), suspension (메모리를 뺏김) ..등등의 다양한 상태값을 가지며 process control block에 해당 정보(pid, state, program counter - 다음으로 실행할 명령어)들이 기록된다. stack, heap, text(code), data 네개의 자원을 할당받는다. 프로세스 같은 경우, 각 자원들을 독립적으로 할당받기 때문에 종료되어도 다른 프로..
사실 이 책을 읽기 시작할 때, 제어 흐름 챕터에 관심있는 부분들이 제일 많아서 기대하고 있었다. 모호했던 내 머리속에 있는 개념들을 잘 정리할 수 있는 기회가 될 것 같아서! 이 챕터부터 몇 가지의 주제들로 파이썬의 비동기 프로그래밍 관련한 내용이 다뤄지지 않을 까 싶다. 5.1 반복형과 반복자 파이썬 2.2에서 yield 가 추가되면서, 이 키워드는 제너레이터를 생성할 수 있게 해주었다. 모든 제너레이터는 반복자다. 파이썬의 collections들은 모두 반복형이며, 다음과 같은 과정으로 iter() 함수가 동작한다. 객체가 __iter__() 메소드를 구현하였는지 확인하고, 이 메서드를 호출해서 반복자를 가져온다. __iter__() 메소드가 구현되어있지 않지만, __getitem__()이 구현되어..
파이썬의 최고 장점 중 하나는 일관성이다. 파이썬으로 어느 정도 작업을 해본 이후에는 새로운 기능을 구현할 때에도 어느정도 예측이 가능하다. 다른 객체 지향 언어에서는 collection.len() 의 방식으로 함수를 사용하지만, 파이썬에서는 len(collection)이라고 사용하는 것이 크게 이상하지 않다. 챕터 1에서는 Pythonic(파이썬스러움)과 파이썬 데이터 모델에 대해 설명한다. 1. 아래는 collection 라이브러리를 이용해 Card 클래스를 정의한 코드이다. import collections Card = collections.namedtuple('Card', ['rank', 'suit']) 실제 업무에서 작업할때는 위 라이브러리를 거의 사용해본 적이 없는 것 같다. 알고리즘 문제 풀..
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:..
Kombu [RabbitMQ with Python] → kombu 라이브러리를 기반으로 rabbitmq 큐에 원하는 (mcard 버닝이란) 테스크를 퍼블리시 하면, 큐에 mcard_burn이라는 키와 데이터, 리퀘스트 아이디가 인큐됨 Kombu란? 파이썬 메시징 라이브러리 메시지 브로커를 쉽게 사용할 수 있는 솔루션 다양한 메시지 브로커를 지원함 자동으로 인코딩과 정규화를 해줌 메시지 전송과 관련하여 예외처리가 잘 되어있음 커넥션이나 채널 오류가 있을 때에도 정상적으로 동작하도록 구현되어있음 amqplib의 불편한점들이 수정됨 carrot을 사용하고 있는 프로젝트를 쉽게 포팅할 수 있음 rabbitmq 에서 Exchange란? Queue에 전송되기 전에 거쳐가는 라우터 어떤 방식으로 메세지를 전달하냐에 ..