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
Metadata
Release files for fnsignal 2.5.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| fnsignal-2.5.5.tar.gz | 10.5 kB | Without provenance | Details for fnsignal-2.5.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| fnsignal-2.5.5-py3-none-any.whl | Python 3 | none | any | Details for fnsignal-2.5.5-py3-none-any.whl |
Total release size: 21.7 kB
Release files / fnsignal-2.5.5.tar.gz
| Download URL | fnsignal-2.5.5.tar.gz |
|---|---|
| Size | 10.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
df2561cb28d37ddeef40b1988bff1176edbc4297e0950609fb9ff54952d2ed83
|
|
BLAKE2b-256 checksum How to use checksums |
c25fc267e1237aede20ff4286ee85c1648af052f8a94a9dc97a9a5bf6af5516f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.2
|
Release files / fnsignal-2.5.5-py3-none-any.whl
| Download URL | fnsignal-2.5.5-py3-none-any.whl |
|---|---|
| Size | 11.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
86e56bedc85e722af74ffbe13dfe0fdaa2dc91e8da65c59785588b2a13905fb6
|
|
BLAKE2b-256 checksum How to use checksums |
1f5b2102b101e5b305ecdf2b348d73076e90bbcf05df17eac598d4016f1c5202
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.2
|
Security for fnsignal 2.5.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.