Python ZeroMQ PUSH / PULL - Потерянные сообщения?

Я пытаюсь использовать python с zeroMQ в PUSH Режим / PULL , отправка сообщений размером 4 [МБ] каждые несколько секунд.

По какой-то причине, хотя кажется, что все сообщения отправлены, ТОЛЬКО НЕКОТОРЫЕ из них были получен сервером. Что мне здесь не хватает?

Вот код для клиента - client.py

import zmq
import struct

# define a string of size 4[MB] 
msgToSend = struct.pack('i', 45) * 1000 * 1000 

context = zmq.Context()
socket = context.socket(zmq.PUSH)
socket.connect("tcp://127.0.0.1:5000")

# print the message size in bytes
print len(msgToSend)

socket.send(msgToSend)

print "Sent message"

А вот код для сервера - server.py

import zmq
import struct

context = zmq.Context()
socket = context.socket(zmq.PULL)
socket.bind("tcp://127.0.0.1:5000")

while True:
    # receive the message
    msg = socket.recv()

    print "Message Size is: {0} [MB]".format( len(msg) / (1000 * 1000) )

Что мне не хватает? Как я могу гарантировать, что сообщения всегда отправляются и не теряются?

Если это важно, я использую Ubuntu 10.04 32-битную машину Core Duo с 2 [ГБ] ОЗУ.

ПРИМЕЧАНИЕ: Я попробовал тот же пример , используя RabbitMQ , и все работает хорошо - сообщения не теряются. Я озадачен, так как часто слышу похвалы zeroMQ . Почему он потерпел неудачу, а RabbitMQ преуспел?

8
задан user3262424 15 July 2011 в 04:02
поделиться