Python 310

[Python] 여러 웹소켓 연결하기

개요Python으로 WebSocket 통신이 필요한 프로그램을 개발하고 있는데, 여러 웹소켓 통신 연결 및 유지가 필요한 상황이다. 평소 Python으로 개발을 할 때 특정 서버, 그것도 여러 서버와 지속적인 통신 연결을 유지할 상황이 많지 않았다. 이번 기회에 적당한 방법을 정리해 둔다.   웹소켓 통신 함수먼저 웹소켓 통신을 유지할 함수를 작성한다. 함수는 2025.04.06-[Python] websockets - 연결 종료 시 자동 재연결에서 작성한 코드이다. 다만 재사용성을 확보할 수 있도록 통신할 URL과 전송할 데이터를 매개변수로 전달받을 수 있도록 수정했다.import asynciofrom websockets.asyncio.client import connectimport jsonasync ..

Python 2025.04.14

[Python] websockets - 연결 종료 시 자동 재연결

개요Python websockets 라이브러리르 사용해서 가상 자산 거래소에 orderbook 정보를 구독하고 있는데, 일정 시간이나 횟수가 지나면 자동으로 연결이 종료되는 문제가 발생했다.관련해서 자동으로 연결을 재시도할 수 있도록 코드를 변경해보려고 한다.   기존 코드import asynciofrom websockets.asyncio.client import connectimport jsonasync def connect_test(): url = "wss://ws-api.korbit.co.kr/v2/public" send_data = [ { "method": "subscribe", "type": "orderbook", ..

Python 2025.04.11

[Python] websockets - 웹소켓 서버 및 클라이언트 개발

개요최근 WebSocket 통신을 다룰 일이 생겼다. 관련하여 Websocket 서버와 클라이언트를 구축하기 위한 Python 라이브러리인 websockets 사용 예시를 간단하게 적어두려고 한다.websockets 라이브러리는 기본적으로 Python 내장 비동기 I/O 라이브러리인 asyncio를 기반으로 한다. threading 구현을 제공하고 있어 asyncio에 익숙하지 않은 경우의 대안을 제공하기도 한다.  WebSocket이란먼저 WebSocket 개념에 대해 빠르게 정리한다.WebSocket은 클라이언트와 서버 간의 양방향 데이터 전송을 가능하게 하는 실시간 통신 프로토콜이다. 비상태 프로토콜인 HTTP와 달리 클라이언트와 서버 간의 지속적인 연결을 유지하여 즉각적인 데이터 전송을 허용한다...

Python 2025.04.10

[Pandas] 문자열 데이터로 DataFrame 로드하기

개요Pandas를 사용하면 주로 딕셔너리, 배열 등을 사용해 데이터프레임을 만들거나 파일을 읽어서, 데이터 처리를 수행하게 된다. 하지만 단순한 테스트 경우에는 간단히 문자열 데이터를 사용해 데이터프레임을 만들게 되는데, 이번 글에서는 문자열로만 데이터프레임을 만드는 방법을 소개하려고 한다.   방법Pandas에서 파일을 읽어 들여 데이터프레임을 만드는 함수는 대개 매개변수로 파일 경로나 버퍼를 전달받는다. 즉, read__csv나 read_json 같은 함수에 파일 경로가 아니라 문자열 버퍼를 전달하면 된다. 방법은 무척 간단하다. 문자열 값을 io.StringIO를 사용해 StringIO 객체로 만들어 read_csv 함수 등에 전달하면 된다.참고로 StringIO는 인메모리 텍스트 버퍼를 사용하는 ..

Python 2025.03.17

[Python] itertools.groupby - 연속적인 부분 찾기

개요알고리즘 문제를 풀다 보면 문자열이나 리스트에서 연속적인 부분을 찾아야 하는 문제를 찾아볼 수 있다. 직접 순회하면서 확인하는 방법도 있지만, 이번 글에서는 itertools의 groupby를 사용해 찾아보려고 한다.  iterrtools.groupbygroupby는 연속적인 키과 그룹을 반환하는 iterator를 만든다. 키는 각 요소에 대한 키 값을 계산하는 함수로, 지정하지 않으면 항등 함수로 기본 설정된다. 키 값이 변경될 때마다 그룹이 새로 생성되기 때문에 기본적으로 정렬된 상태에서 사용해야 한다.  사용 예시예로 들어 abbbaaaa라는 문자열에서 연속적인 부분을 찾으려고 한다.from itertools import groupbystr_input = 'abbbaaaa'for k, val i..

Python 2025.03.13

[Python] sqlalchemy - Trino 다루기

개요운영 중인 서비스에서 Trino를 백엔드로 사용하고 있는데, 기존에는 Trino CLI나 별도의 프런트엔드를 사용해서 작업을 수행했었다. 최근 프로그래밍적인 방법을 사용해서 작업을 할 필요가 있어, 방법을 적어두려고 한다.사용 언어는 Python이다.  필요 라이브러리 설치Python으로 Trino를 다루기 위해서는 trino 클라이언트 라이브러리를 선택할 수 있다. trino 클라이언트 라이브러리는 아래와 같이 pip 명령어로 설치할 수 있는데…… pip install trino테스트 환경이 컨테이너 기반이라서 그런지 trino 라이브러리로는 연결이 잘 안 됐다. 때문에 이 글에서는 sqlalchemy를 사용해 다뤄보려고 한다.pip install sqlalchemy  사용법연결 URLsqlalch..

Python 2025.03.12

[Python] Redis - with문을 사용한 연결

개요2023.06.03-[Python] redis 사용하기, 2024.08.14-[Python] Redis - 비동기 연결에서 redis-py 공식 문서를 참조해 Python으로 Redis에 연결하고 작업을 수행해 보았다. 그 후, 컨텍스트 매니저라는 개념을 새로 알게 되었는데…… Redis 연결도 컨텍스트 매니저로 관리하는 게 좋아 보였다. 공식 문서에서는 with 문 사용 없이 일반적인 방법만 기재되어 있는데, 이번 글에서 with문을 사용한 연결이 가능한지 확인해보려고 한다.   with문 사용 가능 여부결론만 말하자면 동기 방식, 비동기 방식 모두 with 문 사용이 가능하다.2025.01.15-[Python] context manager - 리소스 관리에서 with 문을 사용하기 위해서는 __e..

Python 2025.02.13

[Python] async with - 비동기 컨텍스트 관리자

개요Python의 컨텍스트 관리자란 with문을 사용해 리소스를 관리하는 구조로, 리소스의 할당이나 삭제를 자동으로 처리할 수 있는 코드 블록을 생성해 예외가 발생하더라고 리소스의 획득과 해제를 보장한다.다만, 비동기 프로그래밍 방식에서는 비동기 방식으로 리소스를 획득하고 해제해야 하므로 with 문만으로는 충분하지 않다. 때문에 비동기 컨텍스트 관리자라는 개념이 발생했다. 이번 글에선 비동기 컨텍스트 관리자를 구현하고  사용하는 방법을 알아본다.  비동기 컨텍스트 관리자비동기 컨텍스트 관리자는 enter와 exit 메서드에서 실행을 일시 중지할 수 있는 컨텍스트 관리자다.async with EXPRESSION as TARGET: SUITE위의 async with문은 다음과 같이 이해할 수 있다.m..

Python 2025.02.05

[Python] contextlib - Context Manager 관리

개요 2025.01.15-[Python] context manager - 리소스 관리에서 Context Manager라는 개념을 알아보고, Python 매직 메서드를 구현하는 방식으로 구현도 해봤다.이번 글에서는 Context Manager를 구현하는 여러 가지 방법 중 contextlib를 활용하는 방법을 알아보려고 한다.  contextlibcontextlib은 Context Manager에 대한 일반적인 작업을 위한 유틸리티를 제공한다. 여러 작업을 할 수 있지만, contextmanger라는 데코레이터를 사용하면 매직 메서드를 구현하는 것보다 좀 더 간편하게 context manager를 구현할 수 있다.contextmanger 데코레이터를 활용한 기본적인 구조는 아래와 같다.from contex..

Python 2025.02.03

[Python] context manager - 리소스 관리

개요Python에서 파일을 다룰 때는 파일을 열고 닫는 작업이 필요하다.file = open('somefile', 'w')try: file.write('Hola')finally: file.close()일반적인 프로그래밍에서 연 파일은 반드시 닫는 작업을 해야 하는데, 명시적으로 close 함수를 호출하는 불편함을 해소하기 위해 with 문을 사용할 수 있다.with open("asd.txt", "r") as file: lines = file.readlines() ...이 때 with문을 context manager라고 한다. 그럼 대체 context manger라는 게 뭘까? 알아보자.  Context managerContext Manger는 Python의 독특한 기능 중 하나로, ..

Python 2025.01.31
1 2 3 4 5 6 7 ··· 31