본문 바로가기
반응형

Python134

Python - Session, HTTPAdapter 효율적인 ConnectionPool 관리 파이썬에서 HTTP Session을 통해 빠르게 연결을 지속 사용할 수 있다. 여기에서는 실제 사용중 발생했던 내용에 대해 정리하여, 추후 HTTP Connection 이해를 하는데 도움이 되고자 한다. Session TCP 연결시 본격적으로 데이터를 요청하기전에 네트워크를 연결하는 작업을 진행하게 된다. 이를 TCP 3-Way Handshake 라고 하며, 매 데이터를 요청할 때 마다 새로 연결 작업을 한다는 것은 데이터 처리에 그만큼 시간이 더 걸리게된다. 이러한 부분을 개선해서 동작할 수 있는 구조가 최초 연결한 Session을 만든이후 만든 세션을 재사용하여 요청을 처리하는 구조이다. 이는 보통 HTTP Keep-alive 와 같은 구조로 Python 코드로는 다음과 같이 이용할 수 있다. imp.. 2024. 3. 14.
Python - 왜 좋을까?, 해야 하는 이유 Python 현재 2022년 직업 구인 공고 기준으로 소프트웨어 언어로 1위를 달리고 있다. 필자 역시 현재 Python을 이용하여 개발을 진행하고 있는데, Python이 왜 좋은지 간단히 정리해 본다. 1. 웹 개발 웹 언어 부분에 대해서 Python을 이용할 경우 다양한 프레임 워크를 제공하고 있어서 용도에 알맞게 개발을 용이하게 진행할 수 있다. 가장 가볍게 개발할 수 있는 Flask 부터 REST API 를 쉽게 개발 할 수 있는 FastAPI, Full-Stack 기반으로 프론트를 포함한 MVC 기반의 개발을 지원해주는 Django까지 본인의 환경에 맞춰서 선택한다면 적은 코드로도 휼륭한 결과를 만들 수 있을 것이다. 성능적인 부분 역시 상당한 부분 과거보다 개선되어 문제없이 사용이 가능하다. .. 2024. 3. 14.
VSCode - Python 라이브러리 자동 완성 안될 때 Django에서 자동완성이 되지 않는 상황에서 어떻게 해결할 수 있을까 정리해본다. 보통 이런 상황은 가상 환경이거나, Docker 환경등에서 발생할 가능성이 높다. 이유는 현재 VS Code에서 바라보는 Python 실행 환경이 django 라이브러리를 인식할 수 없는 상태이다. 즉 다중 환경으로 개발을 하는데 현재 VSCode의 환경에서는 사용이 불가능 하다는 얘기이다. 따라서 해결 방법으로는 2가지가 있다. 1. 현재 환경에 Django 환경과 동일하게 라이브러리를 설치해준다. 2. Django 를 개발하는 환경의 Python 경로를 입력한다. 첫번째 방법은 개발 환경마다 따로 구성할 필요가 없도록 구성하여 개발 편의성은 있지만, 라이브러리의 기능적 문제나 환경 문제등에 민감하지 않기 때문에 문제가.. 2024. 3. 14.
Python/Django - 리스트 마지막 콤마?! Python 코드를 보다보면 리스트를 작성할 때 마지막에 콤마를 찍는 경우를 볼 수 있다. 필자는 콤마를 찍지 않는 편인데, 콤마를 찍는 사람들 보고 이상하게 느껴졌다. 콤마를 왜 찍는 거지? 실제 동작은 콤마를 찍으도 찍지 않아도, 정상적으로 동작한다. 얘기를 들어보면, 단순하다. 습관이라는 것이다. 그리고 Github 이나 여러 개발자 여러 개발자들이 콤마를 찍는 습관이 널리 퍼진 것이라고 할 수 있다. 요약해보면, List 새로 추가할 때 기존 콤마를 고려하지 않기 위해 미리 마침표 처럼 찍는 것 깔끔히 마무리하기 위해서 마침표 처럼 찍는 것으로 보인다. 2024. 3. 14.
Django - django-admin을 찾지 못할때 django 패키지를 설치했는데 django-admin을 찾지 못한다면, path 경로에 문제가 있을 수 있다. 먼저 자신이 설치한 pip 혹은 pip3의 버전 정보를 통해 python이 동작한 디렉토리를 확인한다. pip -version 확인해보면 아래와 같이 현재 동작한 경로 정보를 알 수 있다. 패키지에서 사용하는 파일은 윈도우 기준으로 위 디렉토리 하위에 LocalCache\local-packages\Python버전 명\Scripts 위치한다. 해당 경로로 이동하여 LocalCache 디렉토리가 있는지 확인한후 따라 들어가도록 하자. PS C:\Users\Han\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0> l.. 2024. 3. 14.
Python - Regex 개인정보(주민등록번호,전화번호,휴대폰번호,이메일) 패턴 Python의 정규식 표현을 이용해서 개인정보를 탐지할 수 있는데, 다양한 정보를 비교해본 결과 필자 기준으로 적용한 내용들을 정리해본다. 각 탐지 기준은 한국에 맞도록 구성되어 있음을 미리 밝힌다. 그리고 각 탐지 조건은 아래 사이트에서 테스트가 가능하다. https://regex101.com regex101: build, test, and debug regex Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET, Rust. regex101.com 1. 주민등록번호 주민등록 번호를 탐지하기 위해서는 2가지 정도의 패턴을 고민했.. 2024. 3. 11.
Django - django-admin을 찾지 못할때 django 패키지를 설치했는데 django-admin을 찾지 못한다면, path 경로에 문제가 있을 수 있다. 먼저 자신이 설치한 pip 혹은 pip3의 버전 정보를 통해 python이 동작한 디렉토리를 확인한다. pip -version 확인해보면 아래와 같이 현재 동작한 경로 정보를 알 수 있다. 패키지에서 사용하는 파일은 윈도우 기준으로 위 디렉토리 하위에 LocalCache\local-packages\Python버전 명\Scripts 위치한다. 해당 경로로 이동하여 LocalCache 디렉토리가 있는지 확인한후 따라 들어가도록 하자. PS C:\Users\Han\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0> l.. 2024. 3. 10.
Python - Timezone 포맷 Datetime 값 비교 오류 TypeError: can't compare offset-naive and offset-aware datetimes 시간 포맷이 생각보다 다양하다는 것을 먼저 인식하고 있어야 문제에 대해 쉽게 접근할 수 있다. 이 오류는 시간 비교시, 서로 간에 포맷이 맞지 않아서 발생하는데, 특히 이 문제가 어려운 경우는 보통 TimeZone 값이 있을 경우라고 할 수 있다. 타임 존이 있는 값과 타임 존이 없는 값은 서로 다른 타입으로 비교가 되지 않기 때문이다. 이 문제를 해결 하기 위해서는 두가지 값중 하나를 맞추어야 하는데, 보통 다음과 같이 해결 할 수 있다. Timezone 추가하기 Timezone은 pytz 파일에서 제공하는데 이를 이용해서 먼저 타임존을 선언해 놓을 수 있다. import pytz UTC.. 2024. 3. 10.
Python - Datetime 특정 시간 간격으로 나누기 DateTime을 특정 시간으로 나누어 실행해야 하는 경우 유용한 함수이다. 방식은 시간의 차이를 계산한 후 이를 나누어야 하는 타임값으로 나누어 저장하는 방식이라고 할 수 있다. 코드는 아래와 같다. import datetime def split_time_range(start_time, end_time, interval): # 시작 시간과 종료 시간을 UTC로 변환 start_time = datetime.datetime.combine(start_time.date(), start_time.time(), tzinfo=datetime.timezone.utc) end_time = datetime.datetime.combine(end_time.date(), end_time.time(), tzinfo=dateti.. 2024. 3. 10.
반응형