일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Kubernetes
- terraform
- ansible
- Python
- DevOps
- intervals
- dockerfile
- leetcode
- event loop
- IAC
- WSGI
- EC2
- AWS
- docker
- POD
- FastAPI
- 쿠버네티스
- elasticsearch
- 자바스크립트
- asgi
- Service
- Deployment
- ebs
- K8S
- EKS
- Network
- asyncio
- Django
- AZ-900
- AZURE
- Today
- Total
목록Language (32)
궁금한게 많은 개발자 노트
Future Object퓨처 객체는 어떠한 작업의 실행 상태 및 결과를 저장하는 객체입니다. 실행 상태란 해당 작업이 진행 중인지(PENDING), 취소되었는지(CANCELLED), 종료되었는지(FINISHED)를 나타냅니다. 작업의 완료라 함은 CANCELLED 또는 FINISHED 상태를 가리킵니다. 그리고 실행 결과라 함은 해당 작업의 결과 값 혹은 그 작업을 진행하면서 발생한 예외 객체를 말합니다. 예외가 발생한 경우에도 상태는 FINISHED가 됨을 주의해야 합니다.중요한 점으로는 작업의 실행 상태 및 결과를 나타낼 뿐, 작업의 실행을 개시하지 않는다는 점입니다. 퓨처 객체의 중요한 메소드 중하나는 add_done_callback()입니다. 이 메소드를 호출하면 해당 퓨처 객체가 완료될 떄 호출..
동시 프로그래밍(concurrent programming)은 기본적으로 여러 스레드를 활용하여 다중 스레드 프로그래밍을 뜻합니다. 하지만 다중 스레드 환경에서 thread-safe한 프로그래밍을 개발하는 것은 쉽지 않고 고려해야할 사항이 많습니다. 또한, 싱글 코어 프로세서에서 다중 스레드 프로그램을 돌리면 성능이 기대했던 것 보다 나오지 않는 문제가 있습니다. 그래서 단일 스레드에서 비동기적으로 동시에 여러 task를 처리하는 비동기 프로그래밍이 등장하게 되었습니다. python3.4에서 asyncio가 표준 라이브러리로 채택이 되고, 3.5버전에서는 async/await 키워드가 문법으로 채택되면서 파이썬에서도 비동기 프로그래밍이 가능하게 되었습니다. Event Loop 동작 원리 파이썬의 이벤트 루..
set -e는 쉘스크립트에서 발생하는 오류나 에러가 발생하면 즉시 스크립트를 종료하는 옵션입니다. 이 옵션을 설정하면, 스크립트가 실행되는 도중에 어떤 명령어라도 실행이 실패하면 즉시 스크립트가 종료됩니다. 이 옵션을 사용하면, 에러 발생 시 그 에러를 잡고 처리하지 않아도 스크립트가 중단되므로, 스크립트 실행 중에 어떤 문제가 발생했는지 빠르게 파악할 수 있습니다. 이를 통해 디버깅을 용이하게 할 수 있습니다. set -e를 사용하면, 스크립트에서 ||나 if문과 같은 복잡한 조건문을 사용하지 않아도 됩니다. 예를 들어, if문을 사용해 오류가 발생하면 종료하는 코드를 작성하면 아래와 같이 작성할 수 있습니다. if ! command; then exit 1 fi 하지만, set -e를 사용하면 이 코드..
파이썬답게 코딩하기라는 책을 읽어보면서 기록할만한 문장이나 기억해두고 싶은 내용을 정리해보려 합니다. 우선 저자가 이 책을 통해 이야기하고 싶은 내용은 "내가 사용하는 프로그래밍 언어에 대해 관심을 갖자"라고 합니다. 그 이유 2가지 중 첫 째는 어떤 기술을 사용할 줄 알지만 왜 그런 기술이 있고, 어떻게 동작하는지를 모르는 경우가 많기 때문이고, 두 번째는 내가 익숙한 언어가 아닌 다른 언어로 프로그램을 만들 때 새로운 언어에 대한 깊은 이해 없이 내가 익숙한 언어의 코드 스타일로 작성하기 때문이라고 합니다. 프로그래밍의 본질적인 목적은 프로그램을 만드는 것. 즉 어떤 기능을 구현하는 것입니다. 목적을 달성하기 위해서는 언어만 사용할 줄 알면 되지만, 언어에 대한 깊은 이해가 없다면 결과물의 차이를 만..
[ Task 동시 실행 - asyncio.create_task() ] 위에서 이벤트 루프가 태스크들을 동시적으로(Concurrent, not Parallel) 실행한다고 설명하였다. 그런데 사실 asyncio.run() 함수는 기본적으로 하나의 태스크만을 생성하여 실행한다. 따라서 코루틴 체인 과정에서 추가적인 태스크를 생성하여 실행하지 않았다면 현재의 태스크가 중단되었을 때 이벤트 루프는 실행시킬 다른 태스크가 없게 된다. 태스크가 한 개라면 동시적인(Concurrent) 실행을 하는 것이 애초에 말이 되지 않는 것이다. ※ 여기서 말하는 동시 실행이란 Parallel이 아닌 Concurrent를 말한다. 즉, 엄밀한 의미의 동시가 아니라 여러 태스크들을 왔다 갔다 하며 한 쓰레드에서 실행하는 개념인 ..