전체 글 (319) 썸네일형 리스트형 pyinstaller로 빌드된 파이썬 프로그램에서 리소스 경로 가져오기 파이썬으로 개발을 하는 사람 중 개발한 서비스나 앱을 pyinstaller로 배포하는 경우가 있을 수 있다. 다만 pyinstaller로 빌드한 제품은 스크립트로 실행하는 것과 달리 리소스나 에셋 파일을 가져올 때 경로가 달라지므로 이에 대응하는 함수가 필요하다. pyinstaller로 빌드된 앱에서 리소스를 가져오는 방법은 다음과 같이 작성할 수 있다. from typing import Unionimport sysfrom pathlib import Pathdef get_asset_path(relative_path: Union[str, Path]): if getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS'): bundle_dir = P.. 간단한 웹소켓 부하 테스트 비교 FastAPI vs Golang 서론현재 근무 중인 회사에서 수행하는 프로젝트로 LAN을 구축한 후 셀러론 N4505 CPU로 구동되는 서버로부터 클라이언트와 웹소켓 통신을 하는 서비스가 있다. 이 서비스의 가장 중요한 목표는 서버에서 브로드캐스트를 진행할 때 모든 클라이언트가 싱크를 맞춰 "동시에" 반응해야 한다는 것이다. 이를 위해 FastAPI를 사용해 웹소켓 연결을 관리했었는데 문제는 필드 테스트에서 싱크가 깨지는 것으로 체감이 되었기 때문이다. 환경이 제한적이라 현장에서는 모니터링을 제대로 할 수 없었는데, 혹시 파이썬 자체의 한계일까 싶어서 go와 비교를 하기로 했다.스크립트 준비웹서버 부하를 위해선 많은 도구들이 제공되고 있지만 이 포스트에서는 도구 없이 스크립팅으로 측정을 해볼 것이다.FastAPI 코드먼저 이 포스트의 .. VSCode remote SSH 무한 로딩 문제 해결 클라우드 컴퓨팅 인스턴스에 접속하려고 할 때 위 창이 계속 뜨면서 연결되지 않는 경우가 있다. 이는 해당 인스턴스에서 vscode server가 잘못 설치되어 발생한 증상으로 인스턴스에서 vscode server를 삭제해야 한다. 아래와 같은 명령어를 입력하여 날린 후 재부팅한다. rm -rf .vscode-serversudo reboot 재부팅이 확인되었으면 연결을 시도하자. 그러면 vsocde-server를 다시 설치하면서 문제가 해결된다. 구글 GCP 무료 VM 인스턴스 만들기 요즘은 아마존 AWS나 오라클 OCI, 구글의 GCP 등 클라우드 컴퓨팅을 지원하는 다양한 기업이 있다. 특히 오라클이나 구글은 일정 사양을 가진 VM을 만들면 무료로 사용할 수 있도록 하고 있는데 이번 포스팅에서는 GCP에서 무료 VM 인스턴스를 만드는 방법을 살펴보도록 할 것이다.무료 등급 사양 참조먼저 GCP에서는 무료 등급의 VM 사양에 대해 설명하고 있다. 이 조건을 지켜 생성하면 금액 청구 없이 사용할 수 있다.생성 과정 - 프로젝트 만들기먼저 프로젝트를 만들어주자. VM 인스턴스가 생성될 프로젝트를 하나 만들자.생성 과정 - VM 생성 VM 만들기 클릭 사용 버튼을 눌러주고 잠시 기다리면 완료되었다는 알림이 뜨는데 새로고침을 한 번 해준다. 관리 클릭 인스턴스 만들기 클릭 .. [FastAPI] 웹소켓을 다룰 때 주의점 - 공식 예제 개선하기 이 포스트에서는 FastAPI 공식 문서에서 보여주는 웹소켓 연결 예제를 보고 이를 개선하도록 한다. 이 세상 어딘가에서는 분명 FastAPI로 여러 클라이언트로부터 웹소켓 연결을 하려는 경우가 있을 것이다. FastAPI 공식 문서에서는 웹소켓 연결 방법에 대해 이런 예제가 우릴 반겨준다. 그리고 여러 웹소켓 연결을 관리하기 위해서 아래와 같이 웹소켓 연결을 모아두는 ConnectionManager를 정의하고 있다. 하지만 이 코드에는 여러 문제가 있다. 문제가 있는 코드를 공식 문서에 걸어놓다니 참 야속할 따름이다. 어떤 문제가 있는지 보고 개선해 보도록 하자.Race Condition이 발생함내가 생각하는 ConnectionManager의 가장 큰 문제점이다. 클래스에서는 active_conne.. 이전 1 2 3 4 5 6 ··· 64 다음