Perhaps factor stream iteration into something like:
```python
def streams_accepting(self, message_type, data):
    for stream in self.streams.itervalues():
        if stream.accepts(message_type, data):
            yield stream
```
or more concisely, using a generator expression:
```python
def streams_accepting(self, message_type, data):
    return (stream for stream in self.streams.itervalues()
            if stream.accepts(message_type, data))
```