Мне интересно, как лучше всего бинарно закодировать список структур с ThriftPy. Единственный способ, который я нашел, - создать еще один обертку struct
и удалить бинарный префикс/суффикс из потока, но это очень взломано, и определенно должен быть лучший способ.Списки кодирования в Thrift (Python)
foobar.thrift:
struct Object {
1: i32 num1 = 0,
2: i32 num2,
}
struct ListContainer {
1: list<Object> objects
}
app.py
foobar = thriftpy.load('foobar.thrift', module_name="foobar_thrift")
objects = [ ... list of Objects ... ]
thrift_obj = foobar.ListContainer(objects)
trans = TMemoryBuffer()
thrift_obj.write(TBinaryProtocol(trans))
encoded_list = bytes(trans.getvalue())[3:-1]
Как бы вы определить «лучший путь» в контекст этого вопроса? И почему вы вообще удаляете заголовок? IOW, ** чего вы хотите достичь **? – JensG
Существует существующий API, который ожидает объект Array of Thrift, и я хочу его использовать. API реализован на Java, который, как представляется, поддерживает чтение списков объектов (см. [Здесь] (https://github.com/openzipkin/zipkin/blob/fe14098030ab7ee5e305376c232ac72d852890b5/zipkin/src/main/java/zipkin/internal/ThriftCodec. java # L409)) – neverlastn