You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Version: 6.5.5 Type: Pure Python (macOS C extension stripped) SPM target:Tornado Total Python modules: 73
The async web framework Streamlit's transport layer is built on. Standalone-usable for any WebSocket or async-HTTP work — chat apps, server-sent events, long-polling.
WebSocketHandler, websocket_connect — server + client. Streamlit's main runtime dependency. Frame masking uses the Python fallback (the C speedups.abi3.so is macOS-only and was stripped).
IOLoop + concurrency
Module
What it does
tornado.ioloop
IOLoop — the event loop. Modern code uses asyncio directly, but legacy Tornado code calls IOLoop.current(), IOLoop.add_callback, IOLoop.run_sync
tornado.gen
@gen.coroutine, gen.sleep, gen.multi — the old generator-based async API
AsyncIOMainLoop, AsyncIOLoop, to_tornado_future, to_asyncio_future — bidirectional asyncio bridge (this is what modern Tornado uses by default)
platform.caresresolver
c-ares resolver (not bundled)
platform.twisted
Twisted reactor bridge (not bundled)
iOS notes
Stripped:tornado/speedups.abi3.so (macOS-only Mach-O — wouldn't load). The lib's util.py has a try/except ImportError fallback to _websocket_mask_python. Perf hit only affects WebSocket frame masking — negligible at dashboard data rates.
fork-dependent modules left in place but non-functional:
tornado.autoreload — auto-restart on file changes
tornado.process.fork_processes — pre-fork worker model
Don't call these on iOS — they'll fail. The single-process async server is the iOS happy path.