Python
-
[SQLAlchemy] Session vs scoped_session💻 프로그래밍/Python 2022. 10. 1. 02:23
안녕하세요! 개발자 Jay입니다! 블로그에 말하지는 않았지만 퇴사한지 거진 한 달쯤 다되어가네요 ㅋㅋㅋ 입사 전 이것저것 해볼 계획은 많았는데... 생각보다 많이 못해서 아쉽지만... 여하튼ㅋㅋㅋ 토이 프로젝트 프레임워크로 FastAPI를 사용하면서 SQLAlchemy를 사용했었습니다. 그때는 막상 구현하는데 급급해서 자세히 알아보지 못했던 부분들이 있었습니다. 이번에 repository 쪽 코드를 리팩토링 하면서 Session과 scoped_session에 대한 내용을 제대로 파보았습니다. Session이란? SQLAlchemy에서 말하는 Session은 DB Session과는 전혀 다릅니다.(혹시나 헷갈릴 수도 있으니) SQLAlchmey의 Session은 일종에 ORM 버퍼라고 보면 되며 ORM 매..
-
RabbitMQ 톺아보기 2부 (feat.pika)💻 프로그래밍/Python 2022. 9. 17. 20:47
RabbitMQ 톺아보기 1부에 이어서 2부를 시작하겠습니다! RabbitMQ 톺아보기 1부 안녕하세요! 개발자 Jay입니다! 최근에 저의 관심사는 Event-driven, MSA입니다. 아무래도 MSA의 문제가 서비스가 잦은 호출로 인한 네트워크 과부하, 데이터 정합성, 트랜잭션 등에 문제가 있다 보니 E jay-ji.tistory.com 2부에서는 실제 python application으로 RabbitMQ를 활용하는 방법에 대해 알아보려고 합니다. pika라는 라이브러리를 활용할 예정이에요! pika는 RabbitMQ 공식 홈페이지 듀토리얼에서도 사용되는 라이브러리입니다! 공식홈페이지에 보면 다양한 언어에 대해 친절하게 예제들이 만들어져 있습니다! RabbitMQ 듀토리얼과 pika공식문서가 진짜 잘..
-
어느날 신입 개발자가 나에게 물었다..."python에서 staticmethod를 사용하는 것에 있어서 메모리 이슈가 없는 것 일까요?" (feat. java)💻 프로그래밍/Python 2022. 7. 17. 18:57
제곧내(제목이 곧 내용)입니다! ㅋㅋㅋ 최근 저희팀에 합류하신 ㅅㄱ님께서 개발 중 이런 질문을 하셨습니다. 사실 이질문을 듣고 라는 생각이 먼저 떠올랐습니다ㅠㅠ 그리고 python을 메인으로 쓰면서 이런 기본적인 부분을 숙지하지 않았다는게 부끄럽기도 했습니다. (함께 자료를 찾아보고 토론의 시간을 가짐) 처음 C, C++로 개발을 했을 때는 메모리에 관리에 신경 쓰면서 개발을 했던 것 같은데 python으로 개발하면서 이런 부분을 신경을 안 썼던 것 같습니다. (python은 개발자가 동적으로 메모리를 할당할 수 없고 알아서 관리해줍니다) C++처럼 malloc(), calloc(), realloc(), free() 등을 통해 동적 할당을 제어하지도 않고, 변수에 그냥 갖다박으면(?) 알아서 메모리 할당..
-
왜 Django는 여러개의 프로세스로 실행하는거지? (feat. libuv, ASGI)카테고리 없음 2022. 3. 27. 21:25
안녕하세요! Jay 입니다! 오늘은 제가 업무에서 Django를 주로 쓰다가 FastAPI, Nest.js를 접하면서 생겼던 궁금증에 대해서 정리해보려고 합니다! Django 개발을 하는 분들은 다 아시겠지만 runserver로 서비스를 실행시켜서 production 환경에서 사용하지 않습니다! Django 공식문서에도 나와있지만 runserver로 production 환경에서 서빙할 경우 보안에 문제가 있을 수 있다고 합니다. 그래서 Nginx 같은 웹서버와 wsgi를 함께 사용하라고 합니다! 더불어 서비스를 배포할 때 python wsgi 중 gunicorn, uwsgi 등 을 사용하면서 여러 개의 워커(worker)들을 띄워서 클라이언트 요청들을 처리를 합니다. 여태까지는 그냥 아 python이 싱..
-
비동기로 Third-party API 처리하기 (feat. aiohttp, asyncio)💻 프로그래밍/Python 2021. 4. 7. 16:13
안녕하세요! 운동하는 개발자 제이입니다! 오늘은 비동기로 Third-party API를 처리하는 방법, 그리고 제가 왜 비동기를 사용했는지에 대한 과정을 설명해보겠습니다. 제가 비동기에 관심을 갖게 된 이유는 현재 개발 중인 토이 프로젝트에서 Github API를 호출하기 때문입니다. 근데 단순히 1번 호출해서 사용하는 게 아니라 Github 사용자에 따라 10번 일수도 100번 일수도 있습니다. 현재 개발 중인 토이 프로젝트는 등록한 Github 유저의 정보를 가지고 API를 호출해서 정보를 보여주는 서비스입니다. 여기에 DB에 read, write 등의 작업들을 하게 되면 엄청난 시간이 걸리게 됩니다. 지금까지 가장 오래 걸리는 user의 경우 43초 정도가 걸렸네요... 코드와 실행결과를 보면서 좀..
-
Ruby VS Python 뭐가 다를까? [2부]💻 프로그래밍/Ruby On Rails 2021. 3. 13. 15:25
안녕하세요! 이번에는 Ruby VS Python 비교 두 번째 포스팅입니다. 이번 포스팅에서는 method, class, exception(예외처리) 등 에 대해 비교해보고 느낀 점을 공유해보겠습니다. 👨💻 문법 비교 1. method (함수) - Ruby♦️ def test_method(temp = "default") return "hello world! #{temp}" end puts test_method puts test_method('무야호!') puts test_method '무야호~' cs - Python🐍 def test_method(temp="default"): return f"hello world! {temp}" print(test_method()) print(test_method('무..
-
Ruby VS Python 뭐가 다를까? [1부]💻 프로그래밍/Ruby On Rails 2021. 3. 12. 23:06
안녕하세요! 운동하는 개발자 JAY입니다. 오늘은 비스~~읏 하다고 알려져(?) 있는 Ruby와 Python 에 대해서 뭐가 다른지 어떻게 사용되는지 비교해보려고 합니다. Deep한 내용은 아니고 문법적으로 무엇이 다르고, 장단점 등을 비교해보려고 합니다. 아! 두 언어의 문법을 비교하기전 제가 사용한 언어 버전에 대해서 먼저 공유하겠습니다. python : 3.8.5 ruby: 2.6.5 그리고 Ruby 공부 하려고 개발환경을 따로 세팅하려다가 구름 IDE를 사용하면 편하게 스터디용(?)으로 사용할 수 있더라고요. 무료로 5개의 컨테이너를 만들 수 있고 ruby뿐만 아니라 다양한 서버 프레임워크를 공부하기 쉽습니다. 저는 구름 IDE에서 컨테이너 만들어서 스터디를 했습니다! 👨💻 문법 비교 1. 문자..
-
filter() + lambda VS list comprehension💻 프로그래밍/Python 2020. 8. 10. 19:39
안녕하세요! 운동하는 개발자 Jay입니다!! 오늘은 list의 내용을 필터링해서 새로운 list로 반환하는 두 가지 방법에 대해서 알아보겠습니다! 1. filter, lambda 함수를 이용 filter함수와 lambda 함수로 list를 입력받아 조건으로 필터링하는 간단한 코드를 보겠습니다. # python2.x test_list = [1, 2, 3, 4, 5] filter(lambda a : a > 2, test_list) filter(lambda 값 : 조건문, 리스트) 문법은 굉장히 간단합니다. lambda 함수를 정의하고 filter로 감싸주면 됩니다. 결과를 확인해 보겠습니다. 오 상당히 쉽습니다. 하지만 이렇게 쉽게 끝나면 글을 쓰지 않았겠죠? filter함수의 return값이 python3..