전체 글845 Python Metaclass 사용해보기 개요 파이썬에는 메타 클래스(Metaclass)라는 것이 존재한다. 메타 프로그래밍(Meta prgramming)이라고도 불리는데 이를 이용하면 특이한 행위를 수행하는 클래스를 만들 수 있다. 기본적으로 파이썬에서 메타 클래스란 클래스를 만드는 클래스를 의미하고 이를 구현하는 방법은 아래와 같이 두 가지가 존재한다. - type을 사용하여 동적으로 클래스를 생성하는 방식 - type을 상속받은 후 메타 클래스를 구현하는 방식 대부분의 경우에서 메타 클래스가 필요한 경우는 없다고 볼 수 있다. 인터넷을 찾아보면 Django ORM 등을 구현할 때 사용하는 방법이라는 예제도 나와있는데 실제로 나도 실무에서 메타 클래스를 사용한 경험은 거의 없었다. 구글 등 파이썬 메타 클래스에 대해 검색하면 수많은 자료들이.. 2022. 7. 6. Redlock 알고리즘 개요 이전에도 동시성 관련된 글을 몇개 포스팅한적이 있다. 실무에서도 redlock알고리즘의 구현체인 aioredlock을 활용하여 동시성 제어를 진행하고 있는데, redlock 알고리즘에 대해 조금 더 자세히 살펴봐야할 것 같아서 Redis 공식 문서를 찾아봤고 나에게 필요한 부분만 추려서 번역을 진행했다. 본문은 https://redis.io/docs/reference/patterns/distributed-locks/ 에서 확인할 수 있다. Safety and Liveness Guarantees Safety property: 상호배제. 어떤 순간에도 하나의 클라이언트만 락을 획득할 수 있어야 한다. Liveness property A: 데드락이 발생하지 않는 것. 락을 획득한 클라이언트에 문제가 생겨.. 2022. 7. 2. FastAPI에서 SQLAlchemy Session 다루는 방법 개요 FastAPI는 비동기 프레임워크이다. 내부적으로는 Starlette를 Wrapping한 프레임워크인데 일반적인 동기 프레임워크인 Flask, Django등과는 다른 패러다임을 가지고 있다. 그에 따라 프로덕션 레벨에서 서비스를 운영하며 많은 트러블슈팅이 있었고 그 중 데이터베이스와 통신을 위해 사용하는 SQLAlchemy 라이브러리 또한 큰 이슈가 발생했었다. 기존에는 SQLAlchemy 1.3버전을 사용하고 있었기 때문에 비동기를 지원하지 않았지만 1.4버전부터 AsyncSession을 통한 비동기를 지원하기 시작했고 현재 사내 코드를 마이그레이션 하기위해 개인적인 테스트를 진행하고 있다. 본 포스팅에서는 비동기 프레임워크에 SQLAlchemy를 올바르게 사용하기 위한 트러블 슈팅을 포함하여 최.. 2022. 3. 23. SQLAlchemy AsyncSession으로 비동기 적용하며 생긴 문제점 개요 이전 포스팅(https://hides.tistory.com/1101)에서 SQLAlchemy 1.4부터 지원하는 AsyncSession을 사용하여 비동기 세션을 적용하는 방법에 대해 다뤄봤었다. 관련하여 테스트를 진행하던 도중 문제점을 하나 발견했고 나름 크리티컬하다고 볼 수있다고 생각하여 문제점에 대해 다뤄보고 해결방법에 대해 기술한다. asyncio.current_task와 문제점 SQLAlchemy 공식문서에서 async_scoped_session() 메소드 관련 문서를 찾아보면 위와 같은 글을 찾을 수 있다. 주목할점은 scopefunc인자에 asyncio의 current_task를 넣어준다는 점이다. scoped_session()의 scopefunc인자에 값을 대입하는 경우 registr.. 2022. 3. 21. SQLAlchemy AsyncSession으로 비동기 적용하기 개요 현재 서버 프레임워크로 FastAPI를 사용하고 있었고 SQLAlchemy는 1.3대 버전을 사용중이었다. 따라서 DB쪽은 여전히 동기형태로 작업이 진행되기 때문에 비동기 프레임워크의 장점을 제대로 살리지 못했다. 물론 database, peewee등 비동기 ORM이 존재하지만 팀 내 구성원간의 러닝커브등을 고려하여 기존에 사용하던 SQLAlchemy를 그대로 사용중이었다. 하지만 SQLAlchemy 1.4버전부터 비동기 처리를 지원하기 시작했고 그에 따라 마이그레이션을 준비하며 테스트하는 과정을 간단하게 담아본다. create_async_engine from sqlalchemy.ext.asyncio import create_async_engine engine = create_async_engine.. 2022. 3. 18. 바이낸스 회원가입하는 방법 총정리 개요 예전에 바이낸스(Binance)라는 해외 코인거래소 사이트의 회원가입 방법에 대해 포스팅한 적이 있습니다. 그 이후 한국에도 공식적으로 바이낸스 코리아라는 사이트가 생겼지만 2021년 한국에서 철수했다는 기사를 접할 수 있었는데요. 크게 달라진 점은 없지만 이전과는 사이트의 UI나 회원가입할 때 필요로 하는 정보들이 조금씩은 달라졌기에 최신의 정보를 제공하기 위해 다시 한번 바이낸스 사이트에 가입하는 방법에 대해 자세하게 포스팅합니다. 가입 방법 먼저 아래 링크를 클릭하여 바이낸스 회원가입 페이지로 접속합니다. https://accounts.binance.me/en/register 접속하면 위와 같이 국가를 선택하는 팝업창이 하나 뜨게 됩니다. 기본적으로 대한민국이 선택되어 있을텐데요. 아래에 있는.. 2022. 2. 9. 이전 1 ··· 5 6 7 8 9 10 11 ··· 141 다음