Python (43) 썸네일형 리스트형 [Celery] celery beat 1. celery beatcelery beat 는 스케줄러이다. celery beat 가 주기적으로 작업을 시작하면, 가용한 워커에서 작업을 수행한다. celery beat 를 사용하기 위해서는 작업 일정에 대한 entry 를 등록해야 한다. 기본적으로 beat_schedule 설정에서 entry 들을 가져오지만, SQL DB 등과 같이 커스텀 저장소에서 entry 들을 가져올수도 있다. celery beat 를 사용할 때는 한번에 하나의 스케줄러만 동작하도록 해야한다. 만약 여러개의 스케줄러가 동작하는 경우 작업들이 중복으로 실행되어서 동기화와 락 문제가 발생할 수 있다. 이를 방지하기 위해서 하나의 스케줄러를 통한 중앙집중식으로 구성해야 한다.2. celery beat 설정1) Time Zone스케줄.. [Django] Django 배포 - wsgi vs asgi 장고 애플리케이션을 개발하고 나면 이를 배포해야 한다. 자바 스프링의 경우 Tomcat과 같은 WAS 환경으로 배포된다. 하지만 파이썬은 자바 애플리케이션과 달리 컴파일이 필요없고 인터프리터를 통해서 실행된다. 그렇다면 파이썬 애플리케이션이 어떤 웹서버 환경에서 동작하는지 장고 애플리케이션을 기준으로 정리한다.1. CGI vs WSGI vs ASGI파이썬 애플리케이션을 웹서버에서 실행하기 위해서는 웹서버와 애플리케이션이 통신할 수 있어야 한다. 웹서버로 전달된 요청을 애플리케이션으로 전달하고 애플리케이션에서 처리한 응답을 다시 외부로 반환할 수 있어야 한다. 이러한 동작을 위해서 파이썬 애플리케이션의 통신 방식을 인터페이스로 미리 정의해놓았고, 통신 방식에 따라서 CGI, WSGI, ASGI 등 다양하게.. [Python] Default Argument Value - mutable object 파이썬 함수를 호출하다가 이상한 점을 발견하였다. 분명히 인자로 아무 값도 넘겨주지 않았는데 함수 내부에서는 파라미터에 값이 들어가 있는 것이다. 디버깅을 한 결과 파이썬의 default argument value 를 잘못 사용하고 있었다는 것을 알게 되었다. 이 문서에서는 문제를 발견하고 이를 디버깅한 과정과 이후 알게 된 내용을 정리한다. 1. 이슈 발견 및 디버깅 예시에서는 Context 클래스의 func 함수를 호출하고 있다. func 함수는 v 라는 파라미터와 l 이라는 파라미터를 가지고 있다. 여기서 v 는 int 1 을 기본값으로 l 는 list [] 를 기본값으로 가지고 있다. func 함수는 리스트 l 에다가 v 의 값을 추가한 다음에 이를 화면에 출력하는 함수이다. 그렇기 때문에 함수를.. [SQLite] SQLite 설명 및 예제 프로젝트를 진행하면서 DB 를 사용해야 하는 상황이 발생했다. 프로젝트의 프로토타이핑 과정이었기 때문에 다양한 기능과 성능보다는 간단한 설정과 빠르게 적용할 수 있는 DB 가 필요했고 SQLite 를 사용하기로 했다. SQLite 는 File DB 로 가볍고 따로 DB 서버를 설정할 필요가 없고 간편하게 사용할 수 있다. 이 글에서는 SQLite 에 대한 소개와 간단한 사용 방법을 정리하려고 한다. 1. SQLite 란? SQLite 는 가볍고, 빠르며, 독립적인 SQL Database 엔진을 구현하는 C 언어 라이브러리이다.SQLite 는 내장형 SQL DB 엔진으로 MySQL 이나 PostgreSQL 과 같은 기존의 RDBMS 와 달리 서버리스이며 실행을 위해 별도의 설치나 설정이 필요하지 않다. 대.. [Celery] Celery 란? FastAPI 에서 백그라운드 작업을 실행하는 방법을 찾으면서 FastAPI BackgroundTasks 와 Celery 를 비교하는 글을 본 적이 있다. 수행에 오랜 시간과 메모리가 필요한 작업을 따로 실행하고 그러한 작업들의 스케줄링을 하기 위해서 Celery 에 대해서 알아본다.1. Celery 란?Celery 는 python application 에서 많은 양의 작업들을 나눠서 처리할 수 있도록 해주는 분산 시스템이다. Python application 에서 생서된 작업들의 실시간 처리와 작업 스케줄링 등을 제공하는 task queue 이다.- Task Queue 란?Task queue 는 멀티 쓰레드, 또는 멀티 디바이스를 통한 분산 처리에서 사용되는 개념이다. Task queue 에는 처리해야.. [Python] GIL (Global Interpreter Lock) 파이썬에서 멀티쓰레딩과 같이 동시성, 병렬 작업 등에 대한 공부를 하다보면 항상 나오는 단어가 있다. 바로 GIL 이다. GIL 은 Global Interpreter Lock 의 줄임말로 파이썬 인터프리터의 동작과 관련된 용어이다. GIL 이 무엇인지 대략적으로는 알고있지만 자세하게, 그래서 실제 멀티 쓰레딩, 멀티 코어에서 어떻게 동작하는지는 알지 못해서 이번 기회에 좀 더 알아보려 한다. 1. GIL GIL 은 일종의 mutex 이다. 인터프리터에서 thread-safe 하지 않은 객체들에 대한 접근을 막기위해 사용하는 쓰레드 mutex 이다. 인터프리터에서 한 번에 하나의 쓰레드만 실행하도록 하여 쓰레드들 간의 동작에 동기화를 맞추도록 하는 동작 원리이다. 파이썬의 경우 CPython 인터프리터가 .. [SQLAlchemy] SQLAlchemy 기본 설명 SQLAlchemy 는 파이썬의 ORM 라이브러리 중 하나이다. 이 글에서는 SQLAlchemy 의 Quick Start 내용을 기반으로 SQLAlchemy 의 기본적인 내용들을 기술한다. 1. Database 연결 - Engine Engine 은 SQLAlchemy 라이브러리의 시작점이다. SQLAlchemy 의 Pool 과 Dialect 기능을 사용하여 실제 Database 에 접근하고 DB API 를 사용할 수 있도록 해준다. 여기서 Pool 은 DB Connection Pool 을 추상화한 클래스로 connect() 를 통해서 DBAPI 연결을 생성한다. Dialect 는 SQLAlchemy 를 여러 종류의 database 와 DB API 들과 연동하여 사용할 수 있도록 하는 역할을 한다. 각 d.. [Python] Awaitable awaitable 은 파이썬에서 await 키워드를 사용할 수 있는 객체들을 의미한다. 이들은 await 를 통해서 실행이 완료되기 전에 다른 작업으로 전환이 가능하다. awaitable 한 객체들은 Coroutines, Tasks, Futures 의 세종류가 있다. 1. Coroutines 파이썬 코루틴은 asyncio 라이브러리 내에 정의된 비동기 코루틴으로 async def 키워드를 사용하여 정의된 함수가 리턴하는 객체이다. 일반적으로 coroutine 이라는 용어는 async def 함수와 해당 함수가 반환하는 객체를 지칭하는 의미로 혼용된다. import asyncio async def nested(): return 42 async def main(): nested() # 아무 일도 일어나지 않.. 이전 1 2 3 4 5 6 다음