pyleak — это инструмент для обнаружения утечек asyncio задач, потоков и блокировок event loop в Python.
import asyncio
from pyleak import no_task_leaks, no_thread_leaks, no_event_loop_blocking
async def main():
async with no_task_leaks():
asyncio.create_task(asyncio.sleep(10)) # Эта задача будет обнаружена
await asyncio.sleep(0.1)
def sync_main():
with no_thread_leaks():
threading.Thread(target=lambda: time.sleep(10)).start() # Этот поток будет обнаружен
async def async_main():
with no_event_loop_blocking():
time.sleep(0.5) # Это блокирование будет обнаружено
#Python #AsyncIO #pyleak #Разработка #Тестирование #Программирование #PythonTools #AsyncTasks #Threads #EventLoop #Debugging #OpenSource
https://github.com/deepankarm/pyleak
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - deepankarm/pyleak: Detect leaked asyncio tasks, threads, and event loop blocking with stack trace in Python. Inspired…
Detect leaked asyncio tasks, threads, and event loop blocking with stack trace in Python. Inspired by goleak. - deepankarm/pyleak
1 5⚡2
rsloop — это альтернативный event loop для
asyncio, написанный на Rust через PyO3.Каждый
rsloop.Loop держит выделенный Rust‑поток для координации цикла и I/O, при этом ваши Python‑корутины продолжают выполняться в том же потоке, откуда вы вызываете run_forever() / run_until_complete() (обычно main‑поток).pip install rsloop
# или
uv add rsloop
import rsloop
async def main():
...
rsloop.run(main())
Или вручную:
import asyncio, rsloop
loop = rsloop.new_event_loop()
asyncio.set_event_loop(loop)
try:
loop.run_until_complete(...)
finally:
asyncio.set_event_loop(None)
loop.close()
compio с io_uring), Python‑колбэки и таски остаются на Python‑потоке.run_in_executor, TCP/Unix сокеты, пайпы, сабпроцессы, сигналы, Windows‑пайпы и subprocess‑workflow.rsloop патчит asyncio.open_connection() и asyncio.start_server() для использования нативных быстрых стримов, когда запущен rsloop.Loop и не используется TLS; поведение можно отключить через RSLOOP_USE_FAST_STREAMS=0.with rsloop.profile(): rsloop.run(main()) или ручное start_profiler()/stop_profiler() при сборке с фичей profiler.asyncio и близок к uvloop, иногда чуть медленнее по задачам, но выигрывает по p99‑латентности в реальных API‑нагрузках.#python #asyncio #rust #rsloop #eventloop #io_uring #fastapi #uvloop #PyO3 #profiling
https://github.com/RustedBytes/rsloop
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - RustedBytes/rsloop: An event loop for asyncio written in Rust
An event loop for asyncio written in Rust. Contribute to RustedBytes/rsloop development by creating an account on GitHub.
1🔥4👍3