sentry-arroyo 2.21.0__tar.gz → 2.22.0__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.
- {sentry_arroyo-2.21.0/sentry_arroyo.egg-info → sentry_arroyo-2.22.0}/PKG-INFO +1 -1
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/strategies/run_task_with_multiprocessing.py +26 -3
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0/sentry_arroyo.egg-info}/PKG-INFO +1 -1
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/setup.py +1 -1
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/LICENSE +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/MANIFEST.in +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/README.md +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/__init__.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/backends/__init__.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/backends/abstract.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/backends/kafka/__init__.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/backends/kafka/commit.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/backends/kafka/configuration.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/backends/kafka/consumer.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/backends/local/__init__.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/backends/local/backend.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/backends/local/storages/__init__.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/backends/local/storages/abstract.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/backends/local/storages/memory.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/commit.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/dlq.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/errors.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/__init__.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/processor.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/strategies/__init__.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/strategies/abstract.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/strategies/batching.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/strategies/buffer.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/strategies/commit.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/strategies/filter.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/strategies/guard.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/strategies/healthcheck.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/strategies/noop.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/strategies/produce.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/strategies/reduce.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/strategies/run_task.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/strategies/run_task_in_threads.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/strategies/unfold.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/py.typed +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/types.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/utils/__init__.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/utils/clock.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/utils/codecs.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/utils/concurrent.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/utils/logging.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/utils/metricDefs.json +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/utils/metric_defs.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/utils/metrics.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/utils/profiler.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/utils/retries.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/examples/transform_and_produce/__init__.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/examples/transform_and_produce/batched.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/examples/transform_and_produce/script.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/examples/transform_and_produce/simple.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/requirements.txt +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/sentry_arroyo.egg-info/SOURCES.txt +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/sentry_arroyo.egg-info/dependency_links.txt +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/sentry_arroyo.egg-info/not-zip-safe +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/sentry_arroyo.egg-info/requires.txt +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/sentry_arroyo.egg-info/top_level.txt +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/setup.cfg +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/backends/__init__.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/backends/mixins.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/backends/test_commit.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/backends/test_kafka.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/backends/test_local.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/processing/__init__.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/processing/strategies/__init__.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/processing/strategies/test_all.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/processing/strategies/test_batching.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/processing/strategies/test_buffer.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/processing/strategies/test_commit.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/processing/strategies/test_filter.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/processing/strategies/test_guard.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/processing/strategies/test_noop.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/processing/strategies/test_produce.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/processing/strategies/test_reduce.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/processing/strategies/test_run_task.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/processing/strategies/test_run_task_in_threads.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/processing/strategies/test_run_task_with_multiprocessing.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/processing/strategies/test_unfold.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/processing/test_processor.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/test_commit.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/test_dlq.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/test_kip848_e2e.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/test_types.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/utils/__init__.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/utils/test_concurrent.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/utils/test_metrics.py +0 -0
- {sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/tests/utils/test_retries.py +0 -0
|
@@ -196,7 +196,7 @@ class BatchBuilder(Generic[TBatchValue]):
|
|
|
196
196
|
|
|
197
197
|
|
|
198
198
|
def parallel_worker_initializer(
|
|
199
|
-
custom_initialize_func: Optional[Callable[[], None]] = None
|
|
199
|
+
custom_initialize_func: Optional[Callable[[], None]] = None,
|
|
200
200
|
) -> None:
|
|
201
201
|
# Worker process should ignore ``SIGINT`` so that processing is not
|
|
202
202
|
# interrupted by ``KeyboardInterrupt`` during graceful shutdown.
|
|
@@ -468,6 +468,20 @@ class RunTaskWithMultiprocessing(
|
|
|
468
468
|
is applying backpressure. You can likely reduce ``num_processes`` and won't
|
|
469
469
|
notice a performance regression.
|
|
470
470
|
|
|
471
|
+
Prefetching
|
|
472
|
+
~~~~~~~~~~~
|
|
473
|
+
|
|
474
|
+
If you set ``prefetch_batches`` to `True`, Arroyo will allocate twice as
|
|
475
|
+
many input blocks as processes, and will prefetch the next batch while the
|
|
476
|
+
current batch is being processed. This can help saturate the process pool to
|
|
477
|
+
increase throughput, but it also increases memory usage.
|
|
478
|
+
|
|
479
|
+
Use this option if your consumer is bottlenecked on the multiprocessing step
|
|
480
|
+
but also runs time-consuming tasks in the other steps, like ``Produce`` or
|
|
481
|
+
``Unfold``. By prefetching batches, the pool can immediately start working
|
|
482
|
+
on the next batch while the current batch is being sent through the next
|
|
483
|
+
steps.
|
|
484
|
+
|
|
471
485
|
How to tune your consumer
|
|
472
486
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
473
487
|
|
|
@@ -507,6 +521,7 @@ class RunTaskWithMultiprocessing(
|
|
|
507
521
|
output_block_size: Optional[int] = None,
|
|
508
522
|
max_input_block_size: Optional[int] = None,
|
|
509
523
|
max_output_block_size: Optional[int] = None,
|
|
524
|
+
prefetch_batches: bool = False,
|
|
510
525
|
) -> None:
|
|
511
526
|
self.__transform_function = function
|
|
512
527
|
self.__next_step = next_step
|
|
@@ -525,18 +540,26 @@ class RunTaskWithMultiprocessing(
|
|
|
525
540
|
self.__shared_memory_manager = SharedMemoryManager()
|
|
526
541
|
self.__shared_memory_manager.start()
|
|
527
542
|
|
|
543
|
+
block_count = num_processes
|
|
544
|
+
if prefetch_batches:
|
|
545
|
+
# Allocate twice as many blocks as processes to ensure that every
|
|
546
|
+
# process can immediately continue to handle another batch while the
|
|
547
|
+
# main strategy is busy to submit the transformed messages to the
|
|
548
|
+
# next step.
|
|
549
|
+
block_count *= 2
|
|
550
|
+
|
|
528
551
|
self.__input_blocks = [
|
|
529
552
|
self.__shared_memory_manager.SharedMemory(
|
|
530
553
|
input_block_size or DEFAULT_INPUT_BLOCK_SIZE
|
|
531
554
|
)
|
|
532
|
-
for _ in range(
|
|
555
|
+
for _ in range(block_count)
|
|
533
556
|
]
|
|
534
557
|
|
|
535
558
|
self.__output_blocks = [
|
|
536
559
|
self.__shared_memory_manager.SharedMemory(
|
|
537
560
|
output_block_size or DEFAULT_OUTPUT_BLOCK_SIZE
|
|
538
561
|
)
|
|
539
|
-
for _ in range(
|
|
562
|
+
for _ in range(block_count)
|
|
540
563
|
]
|
|
541
564
|
|
|
542
565
|
self.__batch_builder: Optional[
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sentry_arroyo-2.21.0 → sentry_arroyo-2.22.0}/arroyo/processing/strategies/run_task_in_threads.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|