prefect-client 3.4.9.dev3__tar.gz → 3.4.9.dev4__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.
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/PKG-INFO +1 -1
- prefect_client-3.4.9.dev4/src/prefect/_build_info.py +5 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/concurrency_limits_v2.py +193 -59
- prefect_client-3.4.9.dev4/src/prefect/settings/models/server/concurrency.py +17 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/root.py +5 -0
- prefect_client-3.4.9.dev3/src/prefect/_build_info.py +0 -5
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/.gitignore +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/LICENSE +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/README.md +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/pyproject.toml +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/.prefectignore +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/AGENTS.md +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/__main__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/bundles/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/bundles/execute.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/lineage.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/_logging.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/compatibility/blocks.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/compatibility/migration.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/services.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/integrations.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/pytz.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/retries.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/uuid7.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/websockets.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_result_records.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_vendor/croniter/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_vendor/croniter/croniter.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_versioning.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_waiters.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/agent.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/artifacts.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/assets/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/assets/core.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/assets/materialize.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/automations.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/blocks/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/blocks/abstract.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/blocks/core.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/blocks/fields.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/blocks/notifications.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/blocks/redis.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/blocks/system.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/blocks/webhook.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/cache_policies.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/base.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/cloud.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/collections.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/constants.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_automations/client.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_deployments/client.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/base.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/routes.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/actions.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/filters.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/objects.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/responses.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/subscriptions.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/types/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/utilities.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/_asyncio.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/_events.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/context.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/services.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/sync.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/context.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/base.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/deployments.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/flow_runs.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/runner.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/schedules.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/steps/core.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/docker/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/docker/docker_image.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/engine.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/actions.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/cli/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/cli/automations.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/clients.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/filters.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/related.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/schemas/automations.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/schemas/events.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/utilities.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/events/worker.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/exceptions.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/filesystems.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/flow_engine.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/flow_runs.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/flows.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/futures.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/infrastructure/base.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/input/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/input/actions.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/input/run_input.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/locking/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/locking/filesystem.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/locking/memory.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/locking/protocol.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/clients.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/configuration.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/filters.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/formatters.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/handlers.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/highlighters.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/loggers.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/logging/logging.yml +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/main.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/plugins.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/py.typed +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/results.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runner/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runner/_observers.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runner/runner.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runner/server.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runner/storage.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runner/submit.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runner/utils.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runtime/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runtime/deployment.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runtime/flow_run.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/runtime/task_run.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/schedules.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/serializers.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/admin.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/artifacts.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/automations.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/block_capabilities.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/block_documents.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/block_schemas.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/block_types.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/clients.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/collections.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/concurrency_limits.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/csrf_token.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/dependencies.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/deployments.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/events.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/flow_run_states.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/flow_runs.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/flows.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/logs.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/middleware.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/root.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/run_history.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/saved_searches.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/server.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/task_run_states.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/task_runs.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/task_workers.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/templates.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/ui/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/ui/flow_runs.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/ui/flows.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/ui/schemas.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/ui/task_runs.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/validation.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/variables.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/work_queues.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/server/api/workers.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/base.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/constants.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/context.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/legacy.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/_defaults.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/api.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/cli.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/client.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/cloud.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/deployments.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/experiments.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/flows.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/internal.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/logging.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/results.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/root.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/runner.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/api.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/database.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/events.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/logs.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/services.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/tasks.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/testing.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/worker.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/profiles.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/profiles.toml +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/sources.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/states.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/task_engine.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/task_runners.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/task_runs.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/task_worker.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/tasks.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/telemetry/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/telemetry/bootstrap.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/telemetry/instrumentation.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/telemetry/logging.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/telemetry/processors.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/telemetry/services.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/transactions.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/types/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/types/_datetime.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/types/entrypoint.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/types/names.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/_ast.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/_deprecated.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/_engine.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/_git.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/annotations.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/asyncutils.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/callables.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/collections.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/compat.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/context.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/dispatch.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/engine.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/filesystem.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/generics.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/hashing.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/importtools.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/math.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/names.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/processutils.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/pydantic.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/schema_tools/validation.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/services.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/slugify.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/templating.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/text.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/timeout.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/urls.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/utilities/visualization.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/variables.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/workers/__init__.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/workers/base.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/workers/block.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/workers/cloud.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/workers/process.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/workers/server.py +0 -0
- {prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/workers/utilities.py +0 -0
|
@@ -1,11 +1,17 @@
|
|
|
1
|
+
from datetime import timedelta
|
|
1
2
|
from typing import List, Literal, Optional, Union
|
|
2
3
|
from uuid import UUID
|
|
3
4
|
|
|
4
5
|
from fastapi import Body, Depends, HTTPException, Path, status
|
|
6
|
+
from sqlalchemy.ext.asyncio import AsyncSession
|
|
5
7
|
|
|
6
8
|
import prefect.server.models as models
|
|
7
9
|
import prefect.server.schemas as schemas
|
|
8
10
|
from prefect.server.api.dependencies import LimitBody
|
|
11
|
+
from prefect.server.concurrency.lease_storage import (
|
|
12
|
+
ConcurrencyLimitLeaseMetadata,
|
|
13
|
+
get_concurrency_lease_storage,
|
|
14
|
+
)
|
|
9
15
|
from prefect.server.database import PrefectDBInterface, provide_database_interface
|
|
10
16
|
from prefect.server.schemas import actions
|
|
11
17
|
from prefect.server.utilities.schemas import PrefectBaseModel
|
|
@@ -151,6 +157,97 @@ class MinimalConcurrencyLimitResponse(PrefectBaseModel):
|
|
|
151
157
|
limit: int
|
|
152
158
|
|
|
153
159
|
|
|
160
|
+
class ConcurrencyLimitWithLeaseResponse(PrefectBaseModel):
|
|
161
|
+
lease_id: UUID
|
|
162
|
+
limits: list[MinimalConcurrencyLimitResponse]
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
async def _acquire_concurrency_slots(
|
|
166
|
+
session: AsyncSession,
|
|
167
|
+
names: List[str],
|
|
168
|
+
slots: int,
|
|
169
|
+
mode: Literal["concurrency", "rate_limit"],
|
|
170
|
+
) -> tuple[list[schemas.core.ConcurrencyLimitV2], bool]:
|
|
171
|
+
limits = [
|
|
172
|
+
schemas.core.ConcurrencyLimitV2.model_validate(limit)
|
|
173
|
+
for limit in (
|
|
174
|
+
await models.concurrency_limits_v2.bulk_read_concurrency_limits(
|
|
175
|
+
session=session, names=names
|
|
176
|
+
)
|
|
177
|
+
)
|
|
178
|
+
]
|
|
179
|
+
|
|
180
|
+
active_limits = [limit for limit in limits if bool(limit.active)]
|
|
181
|
+
|
|
182
|
+
if any(limit.limit < slots for limit in active_limits):
|
|
183
|
+
raise HTTPException(
|
|
184
|
+
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
|
185
|
+
detail="Slots requested is greater than the limit",
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
non_decaying = [
|
|
189
|
+
str(limit.name) for limit in active_limits if limit.slot_decay_per_second == 0.0
|
|
190
|
+
]
|
|
191
|
+
|
|
192
|
+
if mode == "rate_limit" and non_decaying:
|
|
193
|
+
raise HTTPException(
|
|
194
|
+
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
|
195
|
+
detail=(
|
|
196
|
+
"Only concurrency limits with slot decay can be used for "
|
|
197
|
+
"rate limiting. The following limits do not have a decay "
|
|
198
|
+
f"configured: {','.join(non_decaying)!r}"
|
|
199
|
+
),
|
|
200
|
+
)
|
|
201
|
+
acquired = await models.concurrency_limits_v2.bulk_increment_active_slots(
|
|
202
|
+
session=session,
|
|
203
|
+
concurrency_limit_ids=[limit.id for limit in active_limits],
|
|
204
|
+
slots=slots,
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
if not acquired:
|
|
208
|
+
await session.rollback()
|
|
209
|
+
|
|
210
|
+
return limits, acquired
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
async def _generate_concurrency_locked_response(
|
|
214
|
+
session: AsyncSession,
|
|
215
|
+
limits: list[schemas.core.ConcurrencyLimitV2],
|
|
216
|
+
slots: int,
|
|
217
|
+
) -> HTTPException:
|
|
218
|
+
active_limits = [limit for limit in limits if bool(limit.active)]
|
|
219
|
+
|
|
220
|
+
await models.concurrency_limits_v2.bulk_update_denied_slots(
|
|
221
|
+
session=session,
|
|
222
|
+
concurrency_limit_ids=[limit.id for limit in active_limits],
|
|
223
|
+
slots=slots,
|
|
224
|
+
)
|
|
225
|
+
|
|
226
|
+
def num_blocking_slots(limit: schemas.core.ConcurrencyLimitV2) -> float:
|
|
227
|
+
if limit.slot_decay_per_second > 0:
|
|
228
|
+
return slots + limit.denied_slots
|
|
229
|
+
else:
|
|
230
|
+
return (slots + limit.denied_slots) / limit.limit
|
|
231
|
+
|
|
232
|
+
blocking_limit = max((limit for limit in active_limits), key=num_blocking_slots)
|
|
233
|
+
blocking_slots = num_blocking_slots(blocking_limit)
|
|
234
|
+
|
|
235
|
+
wait_time_per_slot = (
|
|
236
|
+
blocking_limit.avg_slot_occupancy_seconds
|
|
237
|
+
if blocking_limit.slot_decay_per_second == 0.0
|
|
238
|
+
else (1.0 / blocking_limit.slot_decay_per_second)
|
|
239
|
+
)
|
|
240
|
+
|
|
241
|
+
retry_after = wait_time_per_slot * blocking_slots
|
|
242
|
+
|
|
243
|
+
return HTTPException(
|
|
244
|
+
status_code=status.HTTP_423_LOCKED,
|
|
245
|
+
headers={
|
|
246
|
+
"Retry-After": str(retry_after),
|
|
247
|
+
},
|
|
248
|
+
)
|
|
249
|
+
|
|
250
|
+
|
|
154
251
|
@router.post("/increment", status_code=status.HTTP_200_OK)
|
|
155
252
|
async def bulk_increment_active_slots(
|
|
156
253
|
slots: int = Body(..., gt=0),
|
|
@@ -163,86 +260,75 @@ async def bulk_increment_active_slots(
|
|
|
163
260
|
db: PrefectDBInterface = Depends(provide_database_interface),
|
|
164
261
|
) -> List[MinimalConcurrencyLimitResponse]:
|
|
165
262
|
async with db.session_context(begin_transaction=True) as session:
|
|
166
|
-
|
|
167
|
-
schemas.core.ConcurrencyLimitV2.model_validate(limit)
|
|
168
|
-
for limit in (
|
|
169
|
-
await models.concurrency_limits_v2.bulk_read_concurrency_limits(
|
|
170
|
-
session=session, names=names
|
|
171
|
-
)
|
|
172
|
-
)
|
|
173
|
-
]
|
|
174
|
-
|
|
175
|
-
active_limits = [limit for limit in limits if bool(limit.active)]
|
|
176
|
-
|
|
177
|
-
if any(limit.limit < slots for limit in active_limits):
|
|
178
|
-
raise HTTPException(
|
|
179
|
-
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
|
180
|
-
detail="Slots requested is greater than the limit",
|
|
181
|
-
)
|
|
182
|
-
|
|
183
|
-
non_decaying = [
|
|
184
|
-
str(limit.name)
|
|
185
|
-
for limit in active_limits
|
|
186
|
-
if limit.slot_decay_per_second == 0.0
|
|
187
|
-
]
|
|
188
|
-
|
|
189
|
-
if mode == "rate_limit" and non_decaying:
|
|
190
|
-
raise HTTPException(
|
|
191
|
-
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
|
192
|
-
detail=(
|
|
193
|
-
"Only concurrency limits with slot decay can be used for "
|
|
194
|
-
"rate limiting. The following limits do not have a decay "
|
|
195
|
-
f"configured: {','.join(non_decaying)!r}"
|
|
196
|
-
),
|
|
197
|
-
)
|
|
198
|
-
acquired = await models.concurrency_limits_v2.bulk_increment_active_slots(
|
|
263
|
+
acquired_limits, acquired = await _acquire_concurrency_slots(
|
|
199
264
|
session=session,
|
|
200
|
-
|
|
265
|
+
names=names,
|
|
201
266
|
slots=slots,
|
|
267
|
+
mode=mode,
|
|
202
268
|
)
|
|
203
269
|
|
|
204
|
-
if not acquired:
|
|
205
|
-
await session.rollback()
|
|
206
|
-
|
|
207
270
|
if acquired:
|
|
208
271
|
return [
|
|
209
272
|
MinimalConcurrencyLimitResponse(
|
|
210
273
|
id=limit.id, name=str(limit.name), limit=limit.limit
|
|
211
274
|
)
|
|
212
|
-
for limit in
|
|
275
|
+
for limit in acquired_limits
|
|
213
276
|
]
|
|
214
277
|
else:
|
|
215
278
|
async with db.session_context(begin_transaction=True) as session:
|
|
216
|
-
await
|
|
279
|
+
raise await _generate_concurrency_locked_response(
|
|
217
280
|
session=session,
|
|
218
|
-
|
|
281
|
+
limits=acquired_limits,
|
|
219
282
|
slots=slots,
|
|
220
283
|
)
|
|
221
284
|
|
|
222
|
-
def num_blocking_slots(limit: schemas.core.ConcurrencyLimitV2) -> float:
|
|
223
|
-
if limit.slot_decay_per_second > 0.0:
|
|
224
|
-
return slots + limit.denied_slots
|
|
225
|
-
else:
|
|
226
|
-
return (slots + limit.denied_slots) / limit.limit
|
|
227
285
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
286
|
+
@router.post("/increment-with-lease", status_code=status.HTTP_200_OK)
|
|
287
|
+
async def bulk_increment_active_slots_with_lease(
|
|
288
|
+
slots: int = Body(..., gt=0),
|
|
289
|
+
names: List[str] = Body(..., min_items=1),
|
|
290
|
+
mode: Literal["concurrency", "rate_limit"] = Body("concurrency"),
|
|
291
|
+
lease_duration: float = Body(
|
|
292
|
+
300, # 5 minutes
|
|
293
|
+
ge=60, # 1 minute
|
|
294
|
+
le=60 * 60 * 24, # 1 day
|
|
295
|
+
description="The duration of the lease in seconds.",
|
|
296
|
+
),
|
|
297
|
+
db: PrefectDBInterface = Depends(provide_database_interface),
|
|
298
|
+
) -> ConcurrencyLimitWithLeaseResponse:
|
|
299
|
+
async with db.session_context(begin_transaction=True) as session:
|
|
300
|
+
acquired_limits, acquired = await _acquire_concurrency_slots(
|
|
301
|
+
session=session,
|
|
302
|
+
names=names,
|
|
303
|
+
slots=slots,
|
|
304
|
+
mode=mode,
|
|
235
305
|
)
|
|
236
306
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
307
|
+
if acquired:
|
|
308
|
+
lease_storage = get_concurrency_lease_storage()
|
|
309
|
+
lease = await lease_storage.create_lease(
|
|
310
|
+
resource_ids=[limit.id for limit in acquired_limits],
|
|
311
|
+
ttl=timedelta(seconds=lease_duration),
|
|
312
|
+
metadata=ConcurrencyLimitLeaseMetadata(slots=slots),
|
|
313
|
+
)
|
|
314
|
+
return ConcurrencyLimitWithLeaseResponse(
|
|
315
|
+
lease_id=lease.id,
|
|
316
|
+
limits=[
|
|
317
|
+
MinimalConcurrencyLimitResponse(
|
|
318
|
+
id=limit.id, name=str(limit.name), limit=limit.limit
|
|
319
|
+
)
|
|
320
|
+
for limit in acquired_limits
|
|
321
|
+
],
|
|
244
322
|
)
|
|
245
323
|
|
|
324
|
+
else:
|
|
325
|
+
async with db.session_context(begin_transaction=True) as session:
|
|
326
|
+
raise await _generate_concurrency_locked_response(
|
|
327
|
+
session=session,
|
|
328
|
+
limits=acquired_limits,
|
|
329
|
+
slots=slots,
|
|
330
|
+
)
|
|
331
|
+
|
|
246
332
|
|
|
247
333
|
@router.post("/decrement", status_code=status.HTTP_200_OK)
|
|
248
334
|
async def bulk_decrement_active_slots(
|
|
@@ -276,3 +362,51 @@ async def bulk_decrement_active_slots(
|
|
|
276
362
|
)
|
|
277
363
|
for limit in limits
|
|
278
364
|
]
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
@router.post("/decrement-with-lease", status_code=status.HTTP_204_NO_CONTENT)
|
|
368
|
+
async def bulk_decrement_active_slots_with_lease(
|
|
369
|
+
lease_id: UUID = Body(
|
|
370
|
+
...,
|
|
371
|
+
description="The ID of the lease corresponding to the concurrency limits to decrement.",
|
|
372
|
+
),
|
|
373
|
+
occupancy_seconds: Optional[float] = Body(None, gt=0.0),
|
|
374
|
+
db: PrefectDBInterface = Depends(provide_database_interface),
|
|
375
|
+
) -> None:
|
|
376
|
+
lease_storage = get_concurrency_lease_storage()
|
|
377
|
+
lease = await lease_storage.read_lease(lease_id)
|
|
378
|
+
if not lease:
|
|
379
|
+
return
|
|
380
|
+
|
|
381
|
+
async with db.session_context(begin_transaction=True) as session:
|
|
382
|
+
await models.concurrency_limits_v2.bulk_decrement_active_slots(
|
|
383
|
+
session=session,
|
|
384
|
+
concurrency_limit_ids=lease.resource_ids,
|
|
385
|
+
slots=lease.metadata.slots if lease.metadata else 0,
|
|
386
|
+
occupancy_seconds=occupancy_seconds,
|
|
387
|
+
)
|
|
388
|
+
await lease_storage.revoke_lease(lease_id)
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
@router.post("/leases/{lease_id}/renew", status_code=status.HTTP_204_NO_CONTENT)
|
|
392
|
+
async def renew_concurrency_lease(
|
|
393
|
+
lease_id: UUID = Path(..., description="The ID of the lease to renew"),
|
|
394
|
+
lease_duration: float = Body(
|
|
395
|
+
300, # 5 minutes
|
|
396
|
+
ge=60, # 1 minute
|
|
397
|
+
le=60 * 60 * 24, # 1 day
|
|
398
|
+
description="The duration of the lease in seconds.",
|
|
399
|
+
embed=True,
|
|
400
|
+
),
|
|
401
|
+
) -> None:
|
|
402
|
+
lease_storage = get_concurrency_lease_storage()
|
|
403
|
+
lease = await lease_storage.read_lease(lease_id)
|
|
404
|
+
if not lease:
|
|
405
|
+
raise HTTPException(
|
|
406
|
+
status_code=status.HTTP_404_NOT_FOUND, detail="Lease not found"
|
|
407
|
+
)
|
|
408
|
+
|
|
409
|
+
await lease_storage.renew_lease(
|
|
410
|
+
lease_id=lease_id,
|
|
411
|
+
ttl=timedelta(seconds=lease_duration),
|
|
412
|
+
)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from typing import ClassVar
|
|
2
|
+
|
|
3
|
+
from pydantic import Field
|
|
4
|
+
from pydantic_settings import SettingsConfigDict
|
|
5
|
+
|
|
6
|
+
from prefect.settings.base import PrefectBaseSettings, build_settings_config
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ServerConcurrencySettings(PrefectBaseSettings):
|
|
10
|
+
model_config: ClassVar[SettingsConfigDict] = build_settings_config(
|
|
11
|
+
("server", "concurrency")
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
lease_storage: str = Field(
|
|
15
|
+
default="prefect.server.concurrency.lease_storage.memory",
|
|
16
|
+
description="The module to use for storing concurrency limit leases.",
|
|
17
|
+
)
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/settings/models/server/root.py
RENAMED
|
@@ -7,6 +7,7 @@ from pydantic import AliasChoices, AliasPath, Field
|
|
|
7
7
|
from pydantic_settings import SettingsConfigDict
|
|
8
8
|
|
|
9
9
|
from prefect.settings.base import PrefectBaseSettings, build_settings_config
|
|
10
|
+
from prefect.settings.models.server.concurrency import ServerConcurrencySettings
|
|
10
11
|
from prefect.types import LogLevel
|
|
11
12
|
|
|
12
13
|
from .._defaults import default_memo_store_path
|
|
@@ -111,6 +112,10 @@ class ServerSettings(PrefectBaseSettings):
|
|
|
111
112
|
default_factory=ServerAPISettings,
|
|
112
113
|
description="Settings for controlling API server behavior",
|
|
113
114
|
)
|
|
115
|
+
concurrency: ServerConcurrencySettings = Field(
|
|
116
|
+
default_factory=ServerConcurrencySettings,
|
|
117
|
+
description="Settings for controlling server-side concurrency limit handling",
|
|
118
|
+
)
|
|
114
119
|
database: ServerDatabaseSettings = Field(
|
|
115
120
|
default_factory=ServerDatabaseSettings,
|
|
116
121
|
description="Settings for controlling server database behavior",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/bundles/execute.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/lineage.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/sla/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/sla/client.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_experimental/sla/objects.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
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/api.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/calls.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/threads.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/concurrency/waiters.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/integrations.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/pydantic/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/pydantic/schemas.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/pydantic/v1_schema.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/pydantic/v2_schema.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/schemas/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/schemas/bases.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/schemas/fields.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/schemas/serializers.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_internal/schemas/validators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_vendor/croniter/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/_vendor/croniter/croniter.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
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/__init__.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
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/base.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/orchestration/routes.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/__init__.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/actions.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/filters.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/objects.py
RENAMED
|
File without changes
|
{prefect_client-3.4.9.dev3 → prefect_client-3.4.9.dev4}/src/prefect/client/schemas/responses.py
RENAMED
|
File without changes
|