Remove stream feature handlers on session_start.

Based on profiling, using around 35 stream handlers quarters the number
of basic message stanzas that can be processed in a second, in
comparison to only using the bare minimum of four handlers.

To help, we can drop handlers for stream features once the session
has started. So that we can re-enable these handlers when a stream
must restart, the 'stream_start' event has been added which fires
whenever a stream header is received.

The 'stream_start' event is a more generic replacement for the
existing start_stream_handler() method.
This commit is contained in:
Lance Stout
2012-01-17 22:14:24 -08:00
parent a4b27ff031
commit 4274f49ada
5 changed files with 43 additions and 13 deletions

View File

@@ -1223,6 +1223,7 @@ class XMLStream(object):
# as handshakes.
self.stream_end_event.clear()
self.start_stream_handler(root)
self.event('stream_start', root, direct=True)
depth += 1
if event == b'end':
depth -= 1