Python 36

[python3] 동기 코드에서 “비동기 작업자”를 별도 프로세스로 돌리기 — subprocess vs multiprocessing 선택 가이드

동기 방식 메인 코드에서 파일 업로드를 하는 비동기 모듈을 만들어서 쓰려고 할 때 고민한 내용을 정리한 글입니다. 의도(현 구현 방향)목표: 동기 코드(메인 앱)에서 비동기 작업자(업로더 등)를 완전 별도 프로세스로 실행하고, 빠른 취소/종료, 환경변수 주입, 로그 분리, 장애 격리를 쉽게 달성한다.우선순위: 운영 단순성(격리·배포·재시작) > 세밀한 IPC > 최적화 미세튜닝.가정: 작업자는 자체 이벤트 루프/네트워크 스택을 갖고, 성공/실패를 자체적으로 처리/보고할 수 있다.언제 subprocess가 맞는가?다음 조건을 2개 이상 만족하면 **subprocess.Popen**이 보통 더 깔끔합니다.작업자가 독립 실행 스크립트 형태다.환경변수/CLI 인자만으로 설정 전달이 충분하다.실패해도 부모 프로세..

IT/python 2025.10.16

Loguru를 활용한 파이썬 로깅 시스템 정리: 중앙 설정 방식 연구

파이썬 프로젝트의 복잡한 로그 관리를 Loguru 중앙 설정 방식으로 해결하는 방법을 정리했습니다. 멀티프로세스 환경에서도 충돌 없는 안전한 로깅, 레벨별 파일 분리, JSON 출력까지, 실전 예제 코드도 함께 보세요. 파이썬 프로젝트를 진행하면서 print()를 사용한 디버깅에서 벗어나 체계적인 로그 관리의 필요성을 느끼게 되었습니다. 특히 여러 모듈과 프로세스에서 동시에 로그를 남길 때, 설정이 중복되거나 로그가 충돌하는 등의 문제점을 경험했습니다. 이러한 문제를 해결하기 위해 Loguru 라이브러리의 중앙 설정(log_config.py) 방식을 학습하고 그 내용을 정리해 보았습니다. 이 방식은 프로젝트 로깅 시스템의 구조를 개선하는 데 유용한 접근법이라고 생각합니다. 중앙 설정 파일 log_conf..

IT/python 2025.09.16

Ubuntu 20.04에서 Valkey(구 Redis) 소스 설치하는 방법

Valkey는 Redis에서 포크된 오픈소스 인메모리 데이터 스토어입니다. Ubuntu 24.04 이상에서는 공식 패키지로 제공되지만, Ubuntu 20.04에서는 직접 소스에서 컴파일해야 사용할 수 있습니다.이 글에서는 Ubuntu 20.04 환경에서 Valkey를 컴파일 및 설치하는 최신 절차를 정리했습니다.🔍 Valkey가 무엇인가요?Valkey는 Redis의 오픈소스 포크로, Redis가 BSL 라이선스로 변경된 이후 만들어졌습니다. Valkey는 여전히 완전한 오픈소스로 유지되며, Redis의 기존 기능을 대부분 계승합니다.📦 사전 준비: 의존 패키지 설치Valkey는 컴파일 시 TLS, RDMA, systemd 지원 등을 위해 추가 라이브러리를 필요로 합니다.sudo apt updatesu..

IT/database 2024.10.30

[vscode] venv 생성 실패

vscode 에서 보통 가상 환경 추가할 때 화면 하단의 버전 정보를 클릭해서 Create Virtual Environment 를 지정하면 생성을 하게 됩니다.더보기관련 그림아래 부분 클릭Create Virtual Environment... 선택venv 선택python 을 기존 오래된 버전을 삭제하고 새 버전(현재 기준 3.12 및 3.11)을 설치하고 잘 쓰다가 오랜만에 가상 환경을 추가했는데 오류가 떳습니다.2024-07-10 10:24:36.755 [info] Running: D:\user\util\installed\python3.12\python.exe -m venv .venv2024-07-10 10:24:38.178 [info] > .\.venv\Scripts\python.exe -I ~\.vs..

IT/editor & ide 2024.07.10

윈도우 디펜더에서 바이러스라며 pyinstaller 로 생성한 exe 막는 문제

윈도우에는 기본적으로 윈도우 디펜더라는 백신이 설치되어 있습니다.pyinstaller 로 생성한 exe 실행파일이 디펜더에게 바이러스라며 실행이 차단 당하는 문제를 겪었습니다.os 는 윈도우 11 이었습니다.pyinstaller 에는 bootloader 라는 개념이 있습니다.bootloader 는 os 의 그것과는 다르게 미리 컴파일된 특정 플랫폼 전용 라이브러리를 포함시킨 바이너리입니다.bootloader 가 지정되지 않은 pyinstaller 는 관련한 패키지나 소스를 내려받아 이를 빌드하는 구조입니다.pip 로 설치한 pyinstaller 로 생성된 exe 는 특정 플랫폼 전용이 아닌 범용이고 다운로드를 높은 확률로 시도할텐데 이를 백신이 바이러스로 판단하는 것으로 추정됩니다. 이것을 어떻게 구축해..

IT/python 2024.05.27

[example][python3] os.environ 값 예시

기록용으로 남깁니다. 라즈베리파이에서 출력해본 sys.environ 변수 값입니다. import os, pprint pprint.pprint(dict(os.environ)) {'DBUS_SESSION_BUS_ADDRESS': 'unix:path=/run/user/1000/bus', 'HISTFILESIZE': '2000', 'HISTSIZE': '1000', 'HISTTIMEFORMAT': '%F %T ', 'HOME': '/home/pi', 'LANG': 'en_GB.UTF-8', 'LOGNAME': 'pi', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi..

IT/System Digging 2024.03.04

[python3][auto py to exe] 설치해보기

설치 자체는 쉽습니다!!(사실이라면 이런 글도 안썼음..) python3 -m pip install auto-py-to-exe 이렇게 명령 내리면 2.42.0 버전이 설치됩니다(되어야 합니다) 그리고 어렵습니다.. ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. autoit-ripper 1.1.0 requires pefile==2019.4.18, but you have pefile 2023.2.7 which is incompatible. Suc..

IT/python 2024.01.26

[python3] 셸 명령 파싱하기 성능 비교

기존에 파이썬 cpu 온도 얻어오는 코드가 awk 를 두번 돌려서 파싱하는 구조로 되어 있었습니다. vcgencmd measure_temp 명령 결과를 파이썬에서 파싱해도 되는데 뭐가 성능이 더 좋을까 하는 궁금증이 생겼습니다. pi@RPwiznet013:~/wiznet/skp_arhis/app $ python3 Python 3.7.3 (default, Jan 22 2021, 20:04:44) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import subprocess >>> ret, res = subprocess.getstatusoutput("vcgencmd measure_te..

IT/python 2024.01.05

[Raspberry Pi 4B] Python으로 시리얼 번호 깔끔하게 얻는 법 (feat. vcgencmd)

Raspberry Pi 4B에서 장치 고유 식별자인 시리얼 번호를 얻는 방법을 정리했습니다.Python을 사용하면 ssh에서도 훨씬 깔끔하고 명확하게 처리할 수 있습니다.라즈베리파이에서 시리얼 번호를 얻는 대표적인 방법은 /sys, /proc, 그리고 vcgencmd를 활용하는 세 가지가 있습니다.1. /sys 경로 접근 방법 (추천)cat /sys/firmware/devicetree/base/serial-number | tr -d '\0'null 문자 제거 안 하면 다음과 같은 경고가 뜰 수 있습니다:-bash: warning: command substitution: ignored null byte in inputtr -d '\0'을 뒤에 붙이면 깔끔하게 출력됩니다.2. /proc/cpuinfo 활용 ..

IT/RaspberryPi 2023.07.25