talos-python3 3.1.3__tar.gz → 3.1.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. {talos_python3-3.1.3 → talos_python3-3.1.4}/PKG-INFO +1 -1
  2. {talos_python3-3.1.3 → talos_python3-3.1.4}/setup.py +4 -2
  3. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/TalosClientConfig.py +1 -1
  4. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/compression/Compression.py +6 -0
  5. talos_python3-3.1.4/talos/client/compression/Zstd.py +25 -0
  6. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/consumer/TalosConsumer.py +9 -1
  7. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/producer/TalosProducerConfig.py +1 -1
  8. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/producer/TalosProducerConfigKey.py +1 -1
  9. talos_python3-3.1.4/talos/test/client/test_zstd_compression.py +23 -0
  10. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/message/ttypes.py +6 -0
  11. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos_python3.egg-info/PKG-INFO +1 -1
  12. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos_python3.egg-info/SOURCES.txt +2 -1
  13. talos_python3-3.1.4/talos_python3.egg-info/requires.txt +12 -0
  14. talos_python3-3.1.3/talos/example/test.py +0 -46
  15. talos_python3-3.1.3/talos_python3.egg-info/requires.txt +0 -6
  16. {talos_python3-3.1.3 → talos_python3-3.1.4}/setup.cfg +0 -0
  17. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/__init__.py +0 -0
  18. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/admin/TalosAdmin.py +0 -0
  19. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/admin/__init__.py +0 -0
  20. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/Constants.py +0 -0
  21. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/ScheduleInfoCache.py +0 -0
  22. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/SimpleAbnormalCallback.py +0 -0
  23. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/TalosClientConfigkeys.py +0 -0
  24. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/TalosClientFactory.py +0 -0
  25. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/TalosErrors.py +0 -0
  26. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/TalosHttpClient.py +0 -0
  27. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/TopicAbnormalCallback.py +0 -0
  28. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/__init__.py +0 -0
  29. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/compression/Gzip.py +0 -0
  30. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/compression/Snappy.py +0 -0
  31. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/compression/__init__.py +0 -0
  32. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/serialization/MessageSerialization.py +0 -0
  33. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/serialization/MessageSerializationFactory.py +0 -0
  34. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/serialization/MessageSerializer.py +0 -0
  35. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/serialization/MessageSerializerV1.py +0 -0
  36. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/serialization/MessageSerializerV2.py +0 -0
  37. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/serialization/MessageSerializerV3.py +0 -0
  38. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/serialization/MessageVersion.py +0 -0
  39. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/client/serialization/__init__.py +0 -0
  40. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/consumer/MessageCheckpointer.py +0 -0
  41. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/consumer/MessageProcessor.py +0 -0
  42. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/consumer/MessageProcessorFactory.py +0 -0
  43. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/consumer/MessageReader.py +0 -0
  44. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/consumer/MessageReaderFactory.py +0 -0
  45. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/consumer/PartitionFetcher.py +0 -0
  46. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/consumer/SimpleConsumer.py +0 -0
  47. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/consumer/TalosConsumerConfigKeys.py +0 -0
  48. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/consumer/TalosMessageReader.py +0 -0
  49. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/consumer/__init__.py +0 -0
  50. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/example/SimpleConsumerDemo.py +0 -0
  51. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/example/SimpleProducerDemo.py +0 -0
  52. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/example/TalosAdminDemo.py +0 -0
  53. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/example/TalosConsumerDemo.py +0 -0
  54. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/example/TalosProducerDemo.py +0 -0
  55. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/example/__init__.py +0 -0
  56. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/producer/BufferedMessageCount.py +0 -0
  57. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/producer/PartitionMessageQueue.py +0 -0
  58. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/producer/PartitionSender.py +0 -0
  59. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/producer/Partitioner.py +0 -0
  60. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/producer/ProducerNotActiveException.py +0 -0
  61. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/producer/SimplePartitioner.py +0 -0
  62. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/producer/SimpleProducer.py +0 -0
  63. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/producer/TalosProducer.py +0 -0
  64. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/producer/UserMessage.py +0 -0
  65. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/producer/UserMessageCallback.py +0 -0
  66. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/producer/UserMessageResult.py +0 -0
  67. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/producer/__init__.py +0 -0
  68. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/test/__init__.py +0 -0
  69. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/test/admin/__init__.py +0 -0
  70. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/test/client/__init__.py +0 -0
  71. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/test/client/test_socket.py +0 -0
  72. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/test/consumer/__init__.py +0 -0
  73. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/test/consumer/test_PartitionFetcher.py +0 -0
  74. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/test/consumer/test_SimpleConsumer.py +0 -0
  75. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/test/consumer/test_TalosConsumer.py +0 -0
  76. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/test/consumer/test_TalosMessageReader.py +0 -0
  77. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/test/producer/__init__.py +0 -0
  78. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/test/producer/test_PartitionMessageQueue.py +0 -0
  79. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/test/producer/test_PartitionSender.py +0 -0
  80. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/test/producer/test_TalosProducer.py +0 -0
  81. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/test/producer/test_UserMessage.py +0 -0
  82. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/test/test.py +0 -0
  83. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/TMultiplexedProcessor.py +0 -0
  84. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/TRecursive.py +0 -0
  85. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/TSCons.py +0 -0
  86. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/TSerialization.py +0 -0
  87. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/TTornado.py +0 -0
  88. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/Thrift.py +0 -0
  89. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/__init__.py +0 -0
  90. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/auth/__init__.py +0 -0
  91. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/auth/constants.py +0 -0
  92. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/auth/ttypes.py +0 -0
  93. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/authorization/__init__.py +0 -0
  94. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/authorization/constants.py +0 -0
  95. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/authorization/ttypes.py +0 -0
  96. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/common/TalosBaseService.py +0 -0
  97. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/common/__init__.py +0 -0
  98. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/common/constants.py +0 -0
  99. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/common/ttypes.py +0 -0
  100. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/compat.py +0 -0
  101. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/consumer/ConsumerService.py +0 -0
  102. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/consumer/__init__.py +0 -0
  103. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/consumer/constants.py +0 -0
  104. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/consumer/ttypes.py +0 -0
  105. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/message/MessageService.py +0 -0
  106. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/message/__init__.py +0 -0
  107. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/message/constants.py +0 -0
  108. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/metric/MetricService.py +0 -0
  109. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/metric/__init__.py +0 -0
  110. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/metric/constants.py +0 -0
  111. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/metric/ttypes.py +0 -0
  112. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/protocol/TBase.py +0 -0
  113. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/protocol/TBinaryProtocol.py +0 -0
  114. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/protocol/TCompactProtocol.py +0 -0
  115. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/protocol/THeaderProtocol.py +0 -0
  116. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/protocol/TJSONProtocol.py +0 -0
  117. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/protocol/TMultiplexedProtocol.py +0 -0
  118. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/protocol/TProtocol.py +0 -0
  119. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/protocol/TProtocolDecorator.py +0 -0
  120. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/protocol/__init__.py +0 -0
  121. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/quota/QuotaService.py +0 -0
  122. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/quota/__init__.py +0 -0
  123. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/quota/constants.py +0 -0
  124. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/quota/ttypes.py +0 -0
  125. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/server/THttpServer.py +0 -0
  126. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/server/TNonblockingServer.py +0 -0
  127. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/server/TProcessPoolServer.py +0 -0
  128. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/server/TServer.py +0 -0
  129. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/server/__init__.py +0 -0
  130. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/topic/TopicService.py +0 -0
  131. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/topic/__init__.py +0 -0
  132. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/topic/constants.py +0 -0
  133. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/topic/ttypes.py +0 -0
  134. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/transport/THeaderTransport.py +0 -0
  135. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/transport/THttpClient.py +0 -0
  136. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/transport/TSSLSocket.py +0 -0
  137. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/transport/TSocket.py +0 -0
  138. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/transport/TTransport.py +0 -0
  139. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/transport/TTwisted.py +0 -0
  140. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/transport/TZlibTransport.py +0 -0
  141. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/transport/__init__.py +0 -0
  142. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/thrift/transport/sslcompat.py +0 -0
  143. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/utils/Const.py +0 -0
  144. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/utils/FalconWriter.py +0 -0
  145. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/utils/Utils.py +0 -0
  146. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos/utils/__init__.py +0 -0
  147. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos_python3.egg-info/dependency_links.txt +0 -0
  148. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos_python3.egg-info/not-zip-safe +0 -0
  149. {talos_python3-3.1.3 → talos_python3-3.1.4}/talos_python3.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: talos_python3
3
- Version: 3.1.3
3
+ Version: 3.1.4
4
4
  Summary: talos python3 sdk
5
5
  Home-page: UNKNOWN
6
6
  Author: huyumei
@@ -2,7 +2,7 @@ from setuptools import find_packages, setup
2
2
 
3
3
  setup(
4
4
  name='talos_python3',
5
- version='3.1.3',
5
+ version='3.1.4',
6
6
  author='huyumei',
7
7
  author_email='huyumei@xiaomi.com',
8
8
  maintainer='fangchengjin',
@@ -13,7 +13,9 @@ setup(
13
13
  zip_safe=False,
14
14
  install_requires=[
15
15
  'cffi',
16
- 'python-snappy==0.6.1',
16
+ 'python-snappy==0.6.1; python_version < "3.8"',
17
+ 'python-snappy; python_version >= "3.8"',
18
+ 'zstandard==0.21.0',
17
19
  'atomic',
18
20
  'dnspython',
19
21
  'requests',
@@ -190,7 +190,7 @@ class TalosClientConfig:
190
190
  TalosProducerConfigKeys.GALAXY_TALOS_PRODUCER_COMPRESSION_TYPE_DEFAULT)
191
191
 
192
192
  if not (self._compressionType == "NONE" or self._compressionType == "GZIP"
193
- or self._compressionType == "SNAPPY"):
193
+ or self._compressionType == "SNAPPY" or self._compressionType == "ZSTD"):
194
194
  raise RuntimeError("Unsupported Compression Type: " + self._compressionType)
195
195
 
196
196
  # consumer configs
@@ -16,6 +16,7 @@ from talos.client.serialization.MessageSerialization import MessageSerialization
16
16
  from talos.client.Constants import Constants
17
17
  from talos.client.compression.Gzip import Gzip
18
18
  from talos.client.compression.Snappy import Snappy
19
+ from talos.client.compression.Zstd import Zstd
19
20
  from io import BytesIO
20
21
  import logging
21
22
  import traceback
@@ -26,6 +27,7 @@ class Compression(object):
26
27
  logger = logging.getLogger("Compression")
27
28
  gzip = Gzip()
28
29
  snappy = Snappy()
30
+ zstd = Zstd()
29
31
 
30
32
  def compress(self, msgList=None, compressionType=None):
31
33
  return self.do_compress(msgList, compressionType, MessageSerializationFactory().get_default_message_version())
@@ -59,6 +61,8 @@ class Compression(object):
59
61
  messageBlockData = self.gzip.compress(dataOutputIo.getvalue())
60
62
  elif messageCompressionType == MessageCompressionType.SNAPPY:
61
63
  messageBlockData = self.snappy.encode(dataOutputIo.getvalue())
64
+ elif messageCompressionType == MessageCompressionType.ZSTD:
65
+ messageBlockData = self.zstd.compress(dataOutputIo.getvalue())
62
66
  else:
63
67
  raise RuntimeError("Unsupported Compression Type: " + str(compressionType))
64
68
 
@@ -97,6 +101,8 @@ class Compression(object):
97
101
  messageBlockData = BytesIO(self.gzip.decompress(messageBlock.messageBlock))
98
102
  elif messageBlock.compressionType == MessageCompressionType.SNAPPY:
99
103
  messageBlockData = BytesIO(self.snappy.decode(messageBlock.messageBlock))
104
+ elif messageBlock.compressionType == MessageCompressionType.ZSTD:
105
+ messageBlockData = BytesIO(self.zstd.decompress(messageBlock.messageBlock))
100
106
 
101
107
  messageNumber = messageBlock.messageNumber
102
108
 
@@ -0,0 +1,25 @@
1
+ # -*- coding:utf-8 -*-
2
+ #
3
+ # Copyright 2026, Xiaomi.
4
+ # All rights reserved.
5
+ #
6
+
7
+ class Zstd:
8
+ def __init__(self):
9
+ try:
10
+ import zstandard
11
+ except ImportError:
12
+ raise ImportError(
13
+ "zstandard is required for ZSTD compression. "
14
+ "Please install: pip install zstandard==0.21.0"
15
+ )
16
+
17
+ self._zstd = zstandard
18
+ self._compressor = zstandard.ZstdCompressor()
19
+ self._decompressor = zstandard.ZstdDecompressor()
20
+
21
+ def compress(self, c_data):
22
+ return self._compressor.compress(c_data)
23
+
24
+ def decompress(self, c_data):
25
+ return self._decompressor.decompress(c_data)
@@ -180,7 +180,7 @@ class TalosConsumer(object):
180
180
  return
181
181
 
182
182
  topicPartitionNum = response.partitionNumber
183
- if self.partitionNumber < topicPartitionNum:
183
+ if self.partitionNumber != topicPartitionNum:
184
184
  logger.info("partitionNumber changed from " + str(self.partitionNumber) + " to " +
185
185
  str(topicPartitionNum) + ", execute a re-balance task.")
186
186
  # update partition number and call the re - balance
@@ -458,6 +458,14 @@ class TalosConsumer(object):
458
458
  hasList = self.get_has_list()
459
459
  has = len(hasList)
460
460
 
461
+ hasList.sort()
462
+ # release all reduced partition and wait next cycle to balance
463
+ if len(hasList) > 0 and hasList[len(hasList) - 1] >= self.partitionNumber:
464
+ for partitionId in hasList:
465
+ if partitionId >= self.partitionNumber:
466
+ toReleaseList.append(partitionId)
467
+ break
468
+
461
469
  # workerNum > partitionNum, idle workers have no match target, do nothing
462
470
  if i >= len(targetList):
463
471
  break
@@ -54,7 +54,7 @@ class TalosProducerConfig(TalosClientConfig):
54
54
  TalosProducerConfigKeys.GALAXY_TALOS_PRODUCER_COMPRESSION_TYPE_DEFAULT)
55
55
 
56
56
  if not (self._compressionType == "NONE" or self._compressionType == "GZIP"
57
- or self._compressionType == "SNAPPY"):
57
+ or self._compressionType == "SNAPPY" or self._compressionType == "ZSTD"):
58
58
  raise RuntimeError("Unsupported Compression Type: " + self._compressionType)
59
59
 
60
60
  def parameter_checking(self):
@@ -84,7 +84,7 @@ class TalosProducerConfigKeys(TalosClientConfigKeys):
84
84
  GALAXY_TALOS_PRODUCER_WAIT_PARTITION_WORKING_TIME = "galaxy.talos.producer.wait.partition.working.time.milli"
85
85
  GALAXY_TALOS_PRODUCER_WAIT_PARTITION_WORKING_TIME_DEFAULT = 0.2
86
86
 
87
- # The producer compression type, right now suport "NONE", "SNAPPY" and "GZIP";
87
+ # The producer compression type, right now support "NONE", "SNAPPY", "GZIP" and "ZSTD";
88
88
  # default is "SNAPPY";
89
89
  GALAXY_TALOS_PRODUCER_COMPRESSION_TYPE = "galaxy.talos.producer.compression.type"
90
90
  GALAXY_TALOS_PRODUCER_COMPRESSION_TYPE_DEFAULT = "SNAPPY"
@@ -0,0 +1,23 @@
1
+ # Copyright 2026, Xiaomi.
2
+ # All rights reserved.
3
+
4
+ import unittest
5
+
6
+ from talos.client.compression.Compression import Compression
7
+ from talos.thrift.message.ttypes import Message
8
+
9
+
10
+ class test_ZstdCompression(unittest.TestCase):
11
+
12
+ def test_compress_decompress_roundtrip(self):
13
+ msg1 = Message(partitionKey="k1", sequenceNumber="s1", message=b"hello", createTimestamp=1)
14
+ msg2 = Message(partitionKey="k2", sequenceNumber="s2", message=b"world", createTimestamp=2)
15
+
16
+ msg_block = Compression().compress([msg1, msg2], "ZSTD")
17
+ self.assertIsNotNone(msg_block)
18
+
19
+ out = Compression().decompress([msg_block], 0)
20
+ self.assertEqual(2, len(out))
21
+
22
+ self.assertEqual(b"hello", out[0].message.message)
23
+ self.assertEqual(b"world", out[1].message.message)
@@ -58,17 +58,23 @@ class MessageCompressionType:
58
58
  NONE = 0
59
59
  SNAPPY = 1
60
60
  GZIP = 2
61
+ ZSTD = 3
62
+ LZ4 = 4
61
63
 
62
64
  _VALUES_TO_NAMES = {
63
65
  0: "NONE",
64
66
  1: "SNAPPY",
65
67
  2: "GZIP",
68
+ 3: "ZSTD",
69
+ 4: "LZ4",
66
70
  }
67
71
 
68
72
  _NAMES_TO_VALUES = {
69
73
  "NONE": 0,
70
74
  "SNAPPY": 1,
71
75
  "GZIP": 2,
76
+ "ZSTD": 3,
77
+ "LZ4": 4,
72
78
  }
73
79
 
74
80
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: talos-python3
3
- Version: 3.1.3
3
+ Version: 3.1.4
4
4
  Summary: talos python3 sdk
5
5
  Home-page: UNKNOWN
6
6
  Author: huyumei
@@ -15,6 +15,7 @@ talos/client/__init__.py
15
15
  talos/client/compression/Compression.py
16
16
  talos/client/compression/Gzip.py
17
17
  talos/client/compression/Snappy.py
18
+ talos/client/compression/Zstd.py
18
19
  talos/client/compression/__init__.py
19
20
  talos/client/serialization/MessageSerialization.py
20
21
  talos/client/serialization/MessageSerializationFactory.py
@@ -41,7 +42,6 @@ talos/example/TalosAdminDemo.py
41
42
  talos/example/TalosConsumerDemo.py
42
43
  talos/example/TalosProducerDemo.py
43
44
  talos/example/__init__.py
44
- talos/example/test.py
45
45
  talos/producer/BufferedMessageCount.py
46
46
  talos/producer/PartitionMessageQueue.py
47
47
  talos/producer/PartitionSender.py
@@ -61,6 +61,7 @@ talos/test/test.py
61
61
  talos/test/admin/__init__.py
62
62
  talos/test/client/__init__.py
63
63
  talos/test/client/test_socket.py
64
+ talos/test/client/test_zstd_compression.py
64
65
  talos/test/consumer/__init__.py
65
66
  talos/test/consumer/test_PartitionFetcher.py
66
67
  talos/test/consumer/test_SimpleConsumer.py
@@ -0,0 +1,12 @@
1
+ IPy
2
+ atomic
3
+ cffi
4
+ dnspython
5
+ requests
6
+ zstandard==0.21.0
7
+
8
+ [:python_version < "3.8"]
9
+ python-snappy==0.6.1
10
+
11
+ [:python_version >= "3.8"]
12
+ python-snappy
@@ -1,46 +0,0 @@
1
- # Talos Consumer 封装类
2
- from talos.client.TalosClientConfig import TalosClientConfig
3
- from talos.example.TalosConsumerDemo import MyMessageProcessorFactory
4
- from talos.thrift.auth.ttypes import Credential
5
- from talos.thrift.topic.ttypes import TopicAndPartition
6
- from talos.consumer.TalosConsumer import TalosConsumer
7
- from talos.consumer.MessageProcessor import MessageProcessor
8
- from talos.consumer.MessageProcessorFactory import MessageProcessorFactory
9
- from talos.thrift.auth.ttypes import UserType
10
- from atomic import AtomicLong
11
- import logging
12
- import traceback
13
-
14
- class TalosConsumerWrapper:
15
- accessKey = "AKM5DDIDEBDWBBD2PV"
16
- accessSecret = "w8nium9H1/1milUJkHAVGhpiDRchLxnd4ZAUbdE6"
17
- consumerGroup = "ConsumerGroup-fcj"
18
- clientPrefix = "ClientPrefix"
19
- pro = {
20
- "galaxy.talos.service.endpoint": "http://ap-tjv1autopilotsrv-talos.api.xiaomi.net",
21
- "galaxy.talos.client.falcon.monitor.switch": False
22
- }
23
- count = 1
24
-
25
- def __init__(self):
26
- self.consumerConfig = TalosClientConfig(self.pro)
27
- self.credential = Credential(UserType.DEV_XIAOMI, self.accessKey, self.accessSecret)
28
- self.talosConsumer = None
29
-
30
- def start(self, topic_name, partitionCheckPoint=None):
31
- """
32
- 启动消费者。
33
- """
34
- # logger.info(f"start consumer: service_manager={service_manager}, factory={factory}, topic_name={topic_name}")
35
- self.talosConsumer = TalosConsumer(
36
- consumerGroup=self.consumerGroup,
37
- consumerConfig=self.consumerConfig,
38
- credential=self.credential,
39
- topicName=topic_name,
40
- messageProcessorFactory= MyMessageProcessorFactory(),
41
- clientPrefix=self.clientPrefix
42
- )
43
- return self.talosConsumer
44
-
45
- consumerDemo = TalosConsumerWrapper()
46
- consumerDemo.start("geo_result_receive_preview")
@@ -1,6 +0,0 @@
1
- cffi
2
- python-snappy==0.6.1
3
- atomic
4
- dnspython
5
- requests
6
- IPy
File without changes