simple-module-background-tasks 0.0.40__tar.gz → 0.0.41__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.
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/PKG-INFO +5 -5
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/outbox_transport.py +5 -2
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/package.json +1 -1
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/pyproject.toml +5 -5
- simple_module_background_tasks-0.0.41/tests/test_bg_outbox_eager_serialization.py +55 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/.gitignore +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/LICENSE +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/README.md +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/__init__.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/_lifecycle.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/_signal_bus.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/_signal_support.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/after_commit.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/celery_app.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/config_guards.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/constants.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/contracts/__init__.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/contracts/events.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/contracts/logs.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/contracts/outbox.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/contracts/schemas.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/db_settings.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/deps.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/endpoints/__init__.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/endpoints/api_admin.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/endpoints/api_status.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/endpoints/logs_api.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/endpoints/logs_views.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/endpoints/outbox_api.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/endpoints/outbox_views.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/endpoints/views.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/filters.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/health.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/invalidation.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/locales/de.json +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/locales/en.json +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/log_context.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/log_purge.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/log_service.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/log_sink.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/models.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/module.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/outbox_claim.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/outbox_clock.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/outbox_dispatch.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/outbox_guard.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/outbox_loop.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/outbox_service.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/outbox_support.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/outbox_sweep.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/outbox_worker.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/Detail.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/Index.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/Logs.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/Outbox.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/Workers.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/api.generated.ts +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/api.ts +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/DetailFacts.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/ExecutionRow.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/ExecutionsTable.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/LogLevelSelect.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/LogTable.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/LogsPanel.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/OutboxTable.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/PayloadCards.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/ProgressCard.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/RetryAllDialog.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/RetryConfirmDialog.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/RoutesTable.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/StatusPill.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/StatusStrip.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/TaskFilters.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/TasksEmpty.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/TracebackCard.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/WorkerCard.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/WorkerEmptyStates.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/components/WorkerHealthBanner.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/constants.ts +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/logs.ts +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/outbox.ts +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/retry.ts +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/pages/worker-health.ts +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/py.typed +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/retry_service.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/runner.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/service.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/services.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/settings.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/settings_celery.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/settings_env_checks.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/settings_logs.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/signals.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/sync_db.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/task_heartbeat.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/task_routing.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/tasks.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/tenant_context.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/worker_inspector.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/worker_settings.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/background_tasks/workers_state.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/conftest.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_admin_api.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_background_tasks_after_commit.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_background_tasks_heartbeat.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_background_tasks_settings.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_background_tasks_tz_columns.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_beat_schedule.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_config_guards.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_db_timeouts.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_index_has_executions.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_index_worker_presence.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_inprocess_sweep.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_invalidation.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_invalidation_degraded.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_invalidation_redis.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_list_item_payload.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_log_api.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_log_purge.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_log_sink.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_log_sink_loop.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_log_sink_nul.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_outbox_eager_platform.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_outbox_fence_guard.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_outbox_guard_savepoint.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_outbox_loop_interrupt.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_outbox_publish_scope.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_outbox_retry_policy.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_outbox_swallowed_cancel.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_outbox_thread_loops.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_outbox_worker_chain.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_page_clamp.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_pagination_bounds.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_quiet_sweep_unrecorded.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_redis_health.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_redis_url.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_routes_override_api.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_runner_settings.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_service.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_settings_env.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_startup_log_masking.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_task_progress.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_task_progress_audit.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_task_routing.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_task_status_api.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_users_ordering.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_worker_audit.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_worker_audit_bookkeeping.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_bg_worker_settings.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_detail_props.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_execution_tenancy.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_index_filters.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_log_context.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_outbox_admin.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_outbox_concurrency.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_outbox_delivery.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_outbox_tenancy.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_outbox_worker_task.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_retry_failed_bulk.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_retry_failed_guards.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_retry_sweep_ordering.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_signal_tenant_stamp.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_signals.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_sweep_stuck.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_sync_db.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_sync_db_fork.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_tenant_context.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_worker_inspector.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_worker_tenancy.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_workers_endpoints.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/test_workers_uptime.py +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests-js/background_tasks_DetailPage.test.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests-js/background_tasks_IndexPage.test.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests-js/background_tasks_LogsTab.test.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests-js/background_tasks_OutboxPage.test.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests-js/background_tasks_WorkerHealthBanner.test.tsx +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests-js/outbox.test.ts +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests-js/retry.test.ts +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests-js/stub-fetch.ts +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests-js/task-formatters.test.ts +0 -0
- {simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tsconfig.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: simple_module_background_tasks
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.41
|
|
4
4
|
Summary: Celery + Redis task queue with admin UI for monitoring and retrying failed/stuck tasks
|
|
5
5
|
Project-URL: Homepage, https://github.com/antosubash/simple_module_python
|
|
6
6
|
Project-URL: Repository, https://github.com/antosubash/simple_module_python
|
|
@@ -23,10 +23,10 @@ Classifier: Typing :: Typed
|
|
|
23
23
|
Requires-Python: >=3.12
|
|
24
24
|
Requires-Dist: celery[redis]<6,>=5.4
|
|
25
25
|
Requires-Dist: redis<7,>=5
|
|
26
|
-
Requires-Dist: simple-module-core==0.0.
|
|
27
|
-
Requires-Dist: simple-module-db==0.0.
|
|
28
|
-
Requires-Dist: simple-module-hosting==0.0.
|
|
29
|
-
Requires-Dist: simple-module-settings==0.0.
|
|
26
|
+
Requires-Dist: simple-module-core==0.0.41
|
|
27
|
+
Requires-Dist: simple-module-db==0.0.41
|
|
28
|
+
Requires-Dist: simple-module-hosting==0.0.41
|
|
29
|
+
Requires-Dist: simple-module-settings==0.0.41
|
|
30
30
|
Description-Content-Type: text/markdown
|
|
31
31
|
|
|
32
32
|
# simple_module_background_tasks
|
|
@@ -132,6 +132,8 @@ class OutboxTransport(_OutboxWriter):
|
|
|
132
132
|
# Eager in-process deliveries still running (kept so they aren't
|
|
133
133
|
# garbage-collected mid-flight, and so ``drain`` can await them).
|
|
134
134
|
self._tasks: set[asyncio.Task[Any]] = set()
|
|
135
|
+
# Chained eager publishes must not share a StaticPool transaction (#655).
|
|
136
|
+
self._dispatch_lock = asyncio.Lock()
|
|
135
137
|
|
|
136
138
|
def policy(self) -> OutboxPolicy:
|
|
137
139
|
s = self._services.settings
|
|
@@ -155,8 +157,9 @@ class OutboxTransport(_OutboxWriter):
|
|
|
155
157
|
id_strs = [str(i) for i in id_list]
|
|
156
158
|
after_commit(db, [lambda: self._send(id_strs)])
|
|
157
159
|
|
|
158
|
-
def _dispatch(self, ids: list[uuid.UUID]) -> Any:
|
|
159
|
-
|
|
160
|
+
async def _dispatch(self, ids: list[uuid.UUID]) -> Any:
|
|
161
|
+
async with self._dispatch_lock:
|
|
162
|
+
return await dispatch(self._db_state.session_factory, self._bus, self.policy(), ids=ids)
|
|
160
163
|
|
|
161
164
|
def _dispatch_soon(self, ids: list[uuid.UUID]) -> None:
|
|
162
165
|
"""Eager delivery from a session's ``after_commit`` event.
|
{simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/pyproject.toml
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "simple_module_background_tasks"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.41"
|
|
4
4
|
description = "Celery + Redis task queue with admin UI for monitoring and retrying failed/stuck tasks"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "MIT"
|
|
@@ -21,10 +21,10 @@ classifiers = [
|
|
|
21
21
|
"Typing :: Typed",
|
|
22
22
|
]
|
|
23
23
|
dependencies = [
|
|
24
|
-
"simple_module_core==0.0.
|
|
25
|
-
"simple_module_db==0.0.
|
|
26
|
-
"simple_module_hosting==0.0.
|
|
27
|
-
"simple_module_settings==0.0.
|
|
24
|
+
"simple_module_core==0.0.41",
|
|
25
|
+
"simple_module_db==0.0.41",
|
|
26
|
+
"simple_module_hosting==0.0.41",
|
|
27
|
+
"simple_module_settings==0.0.41",
|
|
28
28
|
"celery[redis]>=5.4,<6",
|
|
29
29
|
"redis>=5,<7",
|
|
30
30
|
]
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"""Chained eager deliveries must not overlap on in-memory SQLite (#655)."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
|
|
6
|
+
from background_tasks.constants import OutboxStatus
|
|
7
|
+
from background_tasks.models import TaskExecution
|
|
8
|
+
from simple_module_core import DurableContext
|
|
9
|
+
from simple_module_core.events import Event
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass
|
|
13
|
+
class EagerParent(Event):
|
|
14
|
+
pass
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@dataclass
|
|
18
|
+
class EagerChild(Event):
|
|
19
|
+
pass
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
async def test_chained_eager_delivery_waits_for_parent_dispatch(app, outbox_rows, effect_names):
|
|
23
|
+
app.state.background_tasks.settings.task_always_eager = True
|
|
24
|
+
bus = app.state.sm.event_bus
|
|
25
|
+
active = False
|
|
26
|
+
|
|
27
|
+
async def publish_child(event: EagerParent, ctx: DurableContext) -> None:
|
|
28
|
+
await bus.publish_durable(EagerChild(), ctx.db)
|
|
29
|
+
|
|
30
|
+
async def effect(event: Event, ctx: DurableContext) -> None:
|
|
31
|
+
nonlocal active
|
|
32
|
+
assert not active, "eager dispatchers overlapped"
|
|
33
|
+
active = True
|
|
34
|
+
try:
|
|
35
|
+
await ctx.db.connection()
|
|
36
|
+
await asyncio.sleep(0.05) # intentional-sleep: child dispatcher claims while guarded
|
|
37
|
+
ctx.db.add(TaskExecution(task_name=f"effect:{type(event).__name__}"))
|
|
38
|
+
await ctx.db.flush()
|
|
39
|
+
finally:
|
|
40
|
+
active = False
|
|
41
|
+
|
|
42
|
+
bus.subscribe_durable(EagerParent, publish_child, name="eager-publish-child")
|
|
43
|
+
bus.subscribe_durable(EagerParent, effect, name="eager-parent-effect")
|
|
44
|
+
bus.subscribe_durable(EagerChild, effect, name="eager-child-effect")
|
|
45
|
+
async with app.state.sm.db.session_factory() as db:
|
|
46
|
+
await bus.publish_durable(EagerParent(), db)
|
|
47
|
+
await db.commit()
|
|
48
|
+
|
|
49
|
+
await bus.durable_transport.drain()
|
|
50
|
+
|
|
51
|
+
rows = await outbox_rows()
|
|
52
|
+
assert len(rows) == 3
|
|
53
|
+
assert all(row.status == OutboxStatus.DELIVERED for row in rows)
|
|
54
|
+
assert all(row.attempts == 1 for row in rows)
|
|
55
|
+
assert await effect_names() == ["effect:EagerChild", "effect:EagerParent"]
|
|
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
|
|
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
|
{simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tests/conftest.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
|
|
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
|
{simple_module_background_tasks-0.0.40 → simple_module_background_tasks-0.0.41}/tsconfig.json
RENAMED
|
File without changes
|