Pika публикует сообщение об успехе, размер которого меньше 10 тыс. Байт, и он не удался, когда размер превышает 10 Кбайт.Pika basic_publish ошибка при публикации большого сообщения
Информация об ошибке, как показано ниже:
Error. Connection closed, and the message was never delivered.
Traceback (most recent call last):
File "test_mq.py", line 28, in <module>
ret = test_mq.publish(test_str)
File "rbmq.py", line 146, in publish
ret = self._channel.basic_publish(exchange=self.exc, routing_key=self.rkey, body=body, properties=pika.BasicProperties(delivery_mode=2,))
File "build/bdist.linux-x86_64/egg/pika/adapters/blocking_connection.py", line 521, in basic_publish
File "build/bdist.linux-x86_64/egg/pika/adapters/blocking_connection.py", line 1106, in _rpc
File "build/bdist.linux-x86_64/egg/pika/adapters/blocking_connection.py", line 218, in process_data_events
pika.exceptions.ConnectionClosed
код, как показано ниже:
def publish(self, body):
ret = False
try:
ret = self._channel.basic_publish(exchange=self.exc, routing_key=self.rkey, body=body, properties=pika.BasicProperties(delivery_mode=2,))
except pika.exceptions.ConnectionClosed as exc:
print('Error. Connection closed, and the message was never delivered.')
self._reconnect()
ret = self._channel.basic_publish(exchange=self.exc, routing_key=self.rkey, body=body, properties=pika.BasicProperties(delivery_mode=2,))
print("Try again ret: ", ret)
except Exception as e:
print ("PikaMQ publish really error ", e)
return ret
test_str_fail = 49143 * 'a'
test_str_ok = 9143 * 'a'
ret = test_mq.publish(test_str_ok) #publish success
ret = test_mq.publish(test_str_fail) #publish fail
Спасибо за список с жизнеспособными альтернативами. Я хотел бы добавить к нему [txAMPQ] (https://launchpad.net/txamqp). –
Конечно, на самом деле это не было полным списком. Я в основном хотел предоставить ему несколько альтернатив, подобных пике, если он не сможет заставить его работать. – eandersson