dbos 1.11.0a4__tar.gz → 1.11.0a6__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.
Potentially problematic release.
This version of dbos might be problematic. Click here for more details.
- {dbos-1.11.0a4 → dbos-1.11.0a6}/PKG-INFO +1 -1
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_core.py +5 -3
- {dbos-1.11.0a4 → dbos-1.11.0a6}/pyproject.toml +1 -1
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_async.py +34 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/LICENSE +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/README.md +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/__init__.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/__main__.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_admin_server.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_app_db.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_classproperty.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_client.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_conductor/conductor.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_conductor/protocol.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_context.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_croniter.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_dbos.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_dbos_config.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_debug.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_docker_pg_helper.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_error.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_event_loop.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_fastapi.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_flask.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_kafka.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_kafka_message.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_logger.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/env.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/script.py.mako +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/01ce9f07bd10_streaming.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/04ca4f231047_workflow_queues_executor_id.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/27ac6900c6ad_add_queue_dedup.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/50f3227f0b4b_fix_job_queue.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/5c361fc04708_added_system_tables.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/66478e1b95e5_consolidate_queues.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/83f3732ae8e7_workflow_timeout.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/933e86bdac6a_add_queue_priority.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/a3b18ad34abe_added_triggers.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/d76646551a6b_job_queue_limiter.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/d76646551a6c_workflow_queue.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/d994145b47b6_consolidate_inputs.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/eab0cc1d9a14_job_queue.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/f4b9b32ba814_functionname_childid_op_outputs.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_outcome.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_queue.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_recovery.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_registrations.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_roles.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_scheduler.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_schemas/__init__.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_schemas/application_database.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_schemas/system_database.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_serialization.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_sys_db.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_templates/dbos-db-starter/README.md +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_templates/dbos-db-starter/__package/__init__.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_templates/dbos-db-starter/__package/main.py.dbos +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_templates/dbos-db-starter/__package/schema.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_templates/dbos-db-starter/alembic.ini +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_templates/dbos-db-starter/dbos-config.yaml.dbos +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_templates/dbos-db-starter/migrations/env.py.dbos +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_templates/dbos-db-starter/migrations/script.py.mako +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_templates/dbos-db-starter/migrations/versions/2024_07_31_180642_init.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_templates/dbos-db-starter/start_postgres_docker.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_tracer.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_utils.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_workflow_commands.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/cli/_github_init.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/cli/_template_init.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/cli/cli.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/cli/migration.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/dbos-config.schema.json +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/py.typed +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/__init__.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/atexit_no_ctor.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/atexit_no_launch.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/classdefs.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/client_collateral.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/client_worker.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/conftest.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/dupname_classdefs1.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/dupname_classdefsa.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/more_classdefs.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/queuedworkflow.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_admin_server.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_async_workflow_management.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_classdecorators.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_cli.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_client.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_concurrency.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_config.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_croniter.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_dbos.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_debug.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_docker_secrets.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_failures.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_fastapi.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_fastapi_roles.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_flask.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_kafka.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_migrate.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_outcome.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_package.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_queue.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_scheduler.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_schema_migration.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_singleton.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_spans.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_sqlalchemy.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_streaming.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_workflow_introspection.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/tests/test_workflow_management.py +0 -0
- {dbos-1.11.0a4 → dbos-1.11.0a6}/version/__init__.py +0 -0
|
@@ -157,7 +157,7 @@ class WorkflowHandlePolling(Generic[R]):
|
|
|
157
157
|
|
|
158
158
|
class WorkflowHandleAsyncTask(Generic[R]):
|
|
159
159
|
|
|
160
|
-
def __init__(self, workflow_id: str, task: asyncio.
|
|
160
|
+
def __init__(self, workflow_id: str, task: asyncio.Future[R], dbos: "DBOS"):
|
|
161
161
|
self.workflow_id = workflow_id
|
|
162
162
|
self.task = task
|
|
163
163
|
self.dbos = dbos
|
|
@@ -698,7 +698,8 @@ async def start_workflow_async(
|
|
|
698
698
|
return WorkflowHandleAsyncPolling(new_wf_id, dbos)
|
|
699
699
|
|
|
700
700
|
coro = _execute_workflow_async(dbos, status, func, new_wf_ctx, *args, **kwargs)
|
|
701
|
-
task
|
|
701
|
+
# Shield the workflow task from cancellation
|
|
702
|
+
task = asyncio.shield(asyncio.create_task(coro))
|
|
702
703
|
return WorkflowHandleAsyncTask(new_wf_id, task, dbos)
|
|
703
704
|
|
|
704
705
|
|
|
@@ -1072,7 +1073,8 @@ def decorate_step(
|
|
|
1072
1073
|
|
|
1073
1074
|
def on_exception(attempt: int, error: BaseException) -> float:
|
|
1074
1075
|
dbos.logger.warning(
|
|
1075
|
-
f"Step being automatically retried
|
|
1076
|
+
f"Step being automatically retried (attempt {attempt + 1} of {attempts})",
|
|
1077
|
+
exc_info=error,
|
|
1076
1078
|
)
|
|
1077
1079
|
ctx = assert_current_dbos_context()
|
|
1078
1080
|
span = ctx.get_current_span()
|
|
@@ -595,3 +595,37 @@ async def test_main_loop(dbos: DBOS, config: DBOSConfig) -> None:
|
|
|
595
595
|
# Verify the enqueued task is submitted into the main event loop
|
|
596
596
|
handle = await queue.enqueue_async(test_workflow)
|
|
597
597
|
assert await handle.get_result() == id(asyncio.get_running_loop())
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
@pytest.mark.asyncio
|
|
601
|
+
async def test_workflow_with_task_cancellation(dbos: DBOS) -> None:
|
|
602
|
+
@DBOS.workflow()
|
|
603
|
+
async def test_workflow(duration: float) -> str:
|
|
604
|
+
await DBOS.sleep_async(duration)
|
|
605
|
+
return "completed"
|
|
606
|
+
|
|
607
|
+
# Run the workflow in an asyncio task
|
|
608
|
+
wfid = str(uuid.uuid4())
|
|
609
|
+
event = asyncio.Event()
|
|
610
|
+
|
|
611
|
+
async def run_workflow_task() -> str:
|
|
612
|
+
with SetWorkflowID(wfid):
|
|
613
|
+
handle = await DBOS.start_workflow_async(test_workflow, 1.0)
|
|
614
|
+
event.set()
|
|
615
|
+
return await handle.get_result()
|
|
616
|
+
|
|
617
|
+
task = asyncio.create_task(run_workflow_task())
|
|
618
|
+
|
|
619
|
+
# Wait for the workflow to start
|
|
620
|
+
await event.wait()
|
|
621
|
+
|
|
622
|
+
# Cancel the task
|
|
623
|
+
task.cancel()
|
|
624
|
+
|
|
625
|
+
# Verify the task was cancelled
|
|
626
|
+
with pytest.raises(asyncio.CancelledError):
|
|
627
|
+
await task
|
|
628
|
+
|
|
629
|
+
# Verify the workflow completes despite the task cancellation
|
|
630
|
+
handle: WorkflowHandleAsync[str] = await DBOS.retrieve_workflow_async(wfid)
|
|
631
|
+
assert await handle.get_result() == "completed"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/5c361fc04708_added_system_tables.py
RENAMED
|
File without changes
|
{dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/66478e1b95e5_consolidate_queues.py
RENAMED
|
File without changes
|
|
File without changes
|
{dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/933e86bdac6a_add_queue_priority.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dbos-1.11.0a4 → dbos-1.11.0a6}/dbos/_migrations/versions/d994145b47b6_consolidate_inputs.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
|