Исключение при попытке записать большой объем данных в очередь
marrrvin opened this issue · 3 comments
marrrvin commented
Пример кода для воспроизведения проблемы
from tarantool_queue import Queue
queue = Queue("localhost", 33013, 0)
tube = queue.tube("name_of_tube")
tube.put({'x': 'x' * 10000000})
Получаем ошибку:
Traceback (most recent call last):
File "ex.py", line 6, in <module>
tube.put({'x': 'x' * 10000000})
File "/usr/local/lib/python2.7/site-packages/tarantool_queue/tarantool_queue.py", line 260, in put
self.serialize(data))
File "/usr/local/lib/python2.7/site-packages/tarantool/connection.py", line 283, in call
default_type=default_type)
File "/usr/local/lib/python2.7/site-packages/tarantool/connection.py", line 236, in _send_request
request, space_name, field_defs, default_type)
File "/usr/local/lib/python2.7/site-packages/tarantool/connection.py", line 175, in _send_request_wo_reconnect
self, header, body, space_name, field_defs, default_type)
File "/usr/local/lib/python2.7/site-packages/tarantool/response.py", line 138, in __init__
self._unpack_body(body)
File "/usr/local/lib/python2.7/site-packages/tarantool/response.py", line 237, in _unpack_body
"<%ds" % (tuple_size), buff, offset + 4)[0]
struct.error: unpack_from requires a buffer of at least 1948279913 bytes
Хотелось бы, чтобы записи подобного размера поддерживались. Была реальная проблема на бою.
Версии библиотек:
tarantool==0.3.6
tarantool-queue==0.1.4
bigbes commented
tube.put({'x': 'x' * 10000000})
Формируется пакет размером ~ 9.5 мегабайт, тарантул 1.5 поддерживает пакеты размером не больше 1мб.
Чем я могу попытаться в данном случае помочь - попытаться выплёвывать нормальный exception при этом.
marrrvin commented
Проверять объем сообщения при вставке и падать явно?
marrrvin commented
- лучше добавить в документацию про ограничение на размер кортежа.