buz 2.13.1rc1__py3-none-any.whl → 2.13.1rc4__py3-none-any.whl

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.
@@ -1,6 +1,6 @@
1
1
  from abc import abstractmethod
2
2
  import traceback
3
- from asyncio import Lock, gather, Semaphore, Event as AsyncIOEvent, sleep
3
+ from asyncio import Lock, create_task, gather, Semaphore, Event as AsyncIOEvent, sleep
4
4
  from datetime import timedelta, datetime
5
5
  from itertools import cycle
6
6
  from logging import Logger
@@ -89,11 +89,10 @@ class BaseBuzAIOKafkaAsyncConsumer(AsyncConsumer):
89
89
  start_time = datetime.now()
90
90
  await self.__generate_kafka_consumers()
91
91
 
92
- if len(self.__subscriber_per_consumer_mapper) == 0:
92
+ if len(self.__executor_per_consumer_mapper) == 0:
93
93
  self._logger.error("There are no valid subscribers to execute, finalizing consumer")
94
94
  return
95
95
 
96
- self.__create_queue_repository_per_consumer()
97
96
  self.__initial_coroutines_created_elapsed_time = datetime.now() - start_time
98
97
 
99
98
  start_consumption_time = datetime.now()
@@ -164,11 +163,24 @@ class BaseBuzAIOKafkaAsyncConsumer(AsyncConsumer):
164
163
  on_partition_revoked=self.__on_partition_revoked,
165
164
  )
166
165
 
167
- self.__subscriber_per_consumer_mapper[kafka_consumer] = subscriber
168
-
169
166
  self.__executor_per_consumer_mapper[kafka_consumer] = executor
170
167
 
171
- await kafka_consumer.init()
168
+ self.__queue_per_consumer_mapper[kafka_consumer] = InMemoryMultiqueueRepository()
169
+
170
+ # The purpose of this block is to initialize the consumer without delay the execution of the polling thread
171
+ # If some of the subscribers haven't as many partitions as subscriber they will not be able to be initialized
172
+ # (but maybe they should be initialized in the future)
173
+ create_task(self.__init_consumer(kafka_consumer, subscriber))
174
+ except Exception:
175
+ self._logger.exception(
176
+ f"Unexpected error during Kafka subscriber '{subscriber.fqn()}' creation. Skipping it: {traceback.format_exc()}"
177
+ )
178
+
179
+ async def __init_consumer(self, consumer: AIOKafkaConsumer, subscriber: MetaSubscriber) -> None:
180
+ try:
181
+ await consumer.init()
182
+ self.__subscriber_per_consumer_mapper[consumer] = subscriber
183
+ self._logger.info(f"initialized '{subscriber.fqn()}'")
172
184
  except Exception:
173
185
  self._logger.exception(
174
186
  f"Unexpected error during Kafka subscriber '{subscriber.fqn()}' initialization. Skipping it: {traceback.format_exc()}"
@@ -178,10 +190,6 @@ class BaseBuzAIOKafkaAsyncConsumer(AsyncConsumer):
178
190
  async def _create_kafka_consumer_executor(self, subscriber: MetaSubscriber) -> KafkaEventSubscriberExecutor:
179
191
  pass
180
192
 
181
- def __create_queue_repository_per_consumer(self) -> None:
182
- for kafka_consumer in self.__subscriber_per_consumer_mapper.keys():
183
- self.__queue_per_consumer_mapper[kafka_consumer] = InMemoryMultiqueueRepository()
184
-
185
193
  async def __polling_task(self) -> None:
186
194
  try:
187
195
  while not self.__should_stop.is_set():
@@ -28,7 +28,7 @@ class AIOKafkaConsumer:
28
28
  __DEFAULT_POLL_TIMEOUT_MS = 0
29
29
  __DEFAULT_SESSION_TIMEOUT_MS = 1000 * 60
30
30
  __DEFAULT_HEARTBEAT_INTERVAL_MS = 1000 * 15
31
- __DEFAULT_MAX_POLL_INTERVAL = 600000
31
+ __DEFAULT_MAX_POLL_INTERVAL = 30 * 60 * 1000
32
32
 
33
33
  def __init__(
34
34
  self,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buz
3
- Version: 2.13.1rc1
3
+ Version: 2.13.1rc4
4
4
  Summary: Buz is a set of light, simple and extensible implementations of event, command and query buses.
5
5
  License: MIT
6
6
  Author: Luis Pintado Lozano
@@ -45,7 +45,7 @@ buz/event/exceptions/term_signal_interruption_exception.py,sha256=RkRRF0v_K9Hg48
45
45
  buz/event/exceptions/worker_execution_exception.py,sha256=6mgztvXOCG_9VZ_Jptkk72kZtNWQ2CPuQ3TjXEWFE14,123
46
46
  buz/event/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
47
  buz/event/infrastructure/buz_kafka/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
- buz/event/infrastructure/buz_kafka/base_buz_aiokafka_async_consumer.py,sha256=osVaGMqwSJC8ozV5DMQecls5VvAdIuwX51EDhvz6_qw,14054
48
+ buz/event/infrastructure/buz_kafka/base_buz_aiokafka_async_consumer.py,sha256=Jk69FKc5OmYC0CKx-rZMpqyCWtOMqLTR35Jwukk-QLE,14630
49
49
  buz/event/infrastructure/buz_kafka/buz_aiokafka_async_consumer.py,sha256=dqQDv7taAmINE9G2geMDExbcvSlntP09_rQ0JRbc4Rw,5507
50
50
  buz/event/infrastructure/buz_kafka/buz_aiokafka_multi_threaded_consumer.py,sha256=yrEU51OBjvLjCfYJFJPxux1bcIhoTVMw1Jf0HJMWbb0,5449
51
51
  buz/event/infrastructure/buz_kafka/buz_kafka_event_bus.py,sha256=f94fmS4AVfb3LQsp49e-4Cqzj00IqxHDzuUvDbN4u2s,4258
@@ -149,7 +149,7 @@ buz/kafka/domain/services/kafka_admin_test_client.py,sha256=91l_vFIo1yhJLQQCC_Om
149
149
  buz/kafka/domain/services/kafka_producer.py,sha256=CTiwGYwuzdJY5aeb2WFbJlyCpZ0YyhzcgKQYyogKzUM,401
150
150
  buz/kafka/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
151
151
  buz/kafka/infrastructure/aiokafka/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
- buz/kafka/infrastructure/aiokafka/aiokafka_consumer.py,sha256=wOwaWMjINos2pgxKEJ4B-XpGwhIMagl9lLNssP5oPlw,8601
152
+ buz/kafka/infrastructure/aiokafka/aiokafka_consumer.py,sha256=QDPg-IyDzxIp7Li3TU35FAMH0dOAvLzkWAQofeTegyA,8609
153
153
  buz/kafka/infrastructure/aiokafka/rebalance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
154
154
  buz/kafka/infrastructure/aiokafka/rebalance/kafka_callback_rebalancer.py,sha256=3l7NkTrCt3rBktVIS73cTmCOvv6eFguoCbGMYIUfCFc,1774
155
155
  buz/kafka/infrastructure/aiokafka/translators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -230,7 +230,7 @@ buz/serializer/message_to_json_bytes_serializer.py,sha256=RGZJ64t4t4Pz2FCASZZCv-
230
230
  buz/wrapper/__init__.py,sha256=GnRdJFcncn-qp0hzDG9dBHLmTJSbHFVjE_yr-MdW_n4,77
231
231
  buz/wrapper/async_to_sync.py,sha256=OfK-vrVUhuN-LLLvekLdMbQYtH0ue5lfbvuasj6ovMI,698
232
232
  buz/wrapper/event_loop.py,sha256=pfBJ1g-8A2a3YgW8Gf9Fg0kkewoh3-wgTy2KIFDyfHk,266
233
- buz-2.13.1rc1.dist-info/LICENSE,sha256=Jytu2S-2SPEgsB0y6BF-_LUxIWY7402fl0JSh36TLZE,1062
234
- buz-2.13.1rc1.dist-info/METADATA,sha256=ivZF6gyeBhI_mE6SB_tqdsqGMxznifEUblHcv8TvlKk,1620
235
- buz-2.13.1rc1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
236
- buz-2.13.1rc1.dist-info/RECORD,,
233
+ buz-2.13.1rc4.dist-info/LICENSE,sha256=Jytu2S-2SPEgsB0y6BF-_LUxIWY7402fl0JSh36TLZE,1062
234
+ buz-2.13.1rc4.dist-info/METADATA,sha256=tv1O0K_gaN6QII_FQFL_7OAuBCPsSkkoMiKEyc2ljdo,1620
235
+ buz-2.13.1rc4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
236
+ buz-2.13.1rc4.dist-info/RECORD,,