[rabbitmq-discuss] Pika disconnects
majek04 at gmail.com
Sat Oct 8 11:03:28 BST 2011
On Fri, Oct 7, 2011 at 13:49, John Reuning <john at ibiblio.org> wrote:
> I read that pika isn't thread safe, so I've tried adding a
> threading.RLock around the basic_publish call. This reduces the
> frequency of the disconnects but doesn't eliminate them. I could wrap
> the pika functionality in another layer, check for a disconnect, and
> recycle everything. However, it would be nice to know why this
> happens. Anyone have suggestions?
Pika doesn't support multi threading. Wrapping single basic_publish
isn't good enough - the side effect of this command (network buffer)
is going to affect different thread (the thread with event loop).
I'm afraid there isn't a simple workaround. You can try to wrap
everything (including event loop) in a lock - and thus allow only
one thread at a time to use connection/network socket/buffers.
But doing that will be rather hard (how to stop event loop
if other thread wants to publish?)
Or, maybe a better solution would be to use multiple connections,
one connection per thread.
Does it sound reasonable?
More information about the rabbitmq-discuss