Thank you both for your fast response. The lack of numpy optimizations on the E310 and Python not being real-time safe are both reasonable explanations for what I'm seeing. I think am also running up against the processing limits of the E310; running my flowgraph with a null sink instead of my custom block still overflows, so I might have to lower the sample rate regardless.
Would you be able to recommend any resources for wrapping VOLK with Python?
In terms of buffer use, is there a standard method to avoid the real-time problems from Python? I think I recall seeing something on the mailing list about the vector to stream blocks acting like buffers, but that seems a bit hacky.