A powerful function signal system for Python
Project description
fnsignal
간단하고 강력한 Python 시그널/이벤트 시스템
설치
pip install fnsignal
빠른 시작
1. 기본 사용법
from fnsignal.fnsignal import signal_manager
# 콜백 함수 정의
def my_callback(signal_name, data, sender):
print(f"시그널명: {signal_name}, 데이터: {data}, 보낸이: {sender}")
# 콜백 등록
signal_manager.register_callback("hello", my_callback)
# 시그널 발송
signal_manager.send_signal("hello", data={"foo": "bar"}, sender="나")
2. 여러 콜백 등록
def cb1(signal_name, data, sender):
print("cb1:", data)
def cb2(signal_name, data, sender):
print("cb2:", data)
signal_manager.register_callback("event", cb1)
signal_manager.register_callback("event", cb2)
signal_manager.send_signal("event", 123, sender="user")
3. 콜백 해제
signal_manager.unregister_callback("event", cb1)
signal_manager.send_signal("event", 456, sender="user")
4. 비동기 콜백
import asyncio
async def async_cb(signal_name, data, sender):
print("비동기 콜백:", data)
signal_manager.register_callback("async_event", async_cb)
signal_manager.send_signal("async_event", "async data", sender="user")
주요 기능
1. 시그널 관리
- 시그널 발송/수신
- 콜백 등록/해제
- 우선순위 기반 콜백 실행
- 필터 조건 지원
2. 비동기 지원
- 동기/비동기 콜백 모두 지원
- asyncio 이벤트 루프 자동 관리
- Thread-safe 설계
3. 통계 및 모니터링
- 시그널/콜백 실행 통계
- 에러 카운트 및 로깅
- 실행 시간 측정
4. 안전성
- 자동 에러 처리
- 연속 에러 시 자동 재초기화
- Thread-safe 동작
API 문서
signal_manager.register_callback(signal_name, callback, sender=None, priority=SignalPriority.NORMAL, filter_condition=None, stop_propagation=False)
- 시그널에 콜백을 등록합니다.
- 우선순위, 필터, 전파 중단 옵션 지정 가능
signal_manager.unregister_callback(signal_name, callback)
- 특정 시그널의 콜백을 해제합니다.
signal_manager.send_signal(signal_name, data=None, sender=None, priority=SignalPriority.NORMAL)
- 시그널을 발송합니다.
- 등록된 콜백들이 우선순위에 따라 실행됩니다.
signal_manager.get_signal_stats()
- 현재 시그널 시스템의 통계 정보를 반환합니다.
라이선스
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
fnsignal-2.5.5.tar.gz
(10.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
fnsignal-2.5.5-py3-none-any.whl
(11.3 kB
view details)
File details
Details for the file fnsignal-2.5.5.tar.gz.
File metadata
- Download URL: fnsignal-2.5.5.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df2561cb28d37ddeef40b1988bff1176edbc4297e0950609fb9ff54952d2ed83
|
|
| MD5 |
d156db355aa7d42d9e2fc26a4a11948c
|
|
| BLAKE2b-256 |
c25fc267e1237aede20ff4286ee85c1648af052f8a94a9dc97a9a5bf6af5516f
|
File details
Details for the file fnsignal-2.5.5-py3-none-any.whl.
File metadata
- Download URL: fnsignal-2.5.5-py3-none-any.whl
- Upload date:
- Size: 11.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86e56bedc85e722af74ffbe13dfe0fdaa2dc91e8da65c59785588b2a13905fb6
|
|
| MD5 |
c8db849c9e9e99e6525df90489502a92
|
|
| BLAKE2b-256 |
1f5b2102b101e5b305ecdf2b348d73076e90bbcf05df17eac598d4016f1c5202
|