dbos 0.23.0a14__py3-none-any.whl → 0.24.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of dbos might be problematic. Click here for more details.

dbos/_scheduler.py CHANGED
@@ -1,4 +1,5 @@
1
1
  import threading
2
+ import traceback
2
3
  from datetime import datetime, timezone
3
4
  from typing import TYPE_CHECKING, Callable
4
5
 
@@ -33,8 +34,10 @@ def scheduler_loop(
33
34
  with SetWorkflowID(f"sched-{func.__qualname__}-{nextExecTime.isoformat()}"):
34
35
  try:
35
36
  scheduler_queue.enqueue(func, nextExecTime, datetime.now(timezone.utc))
36
- except Exception as e:
37
- dbos_logger.warning(f"Error scheduling workflow: ", e)
37
+ except Exception:
38
+ dbos_logger.warning(
39
+ f"Exception encountered in scheduler thread: {traceback.format_exc()})"
40
+ )
38
41
 
39
42
 
40
43
  def scheduled(
dbos/_sys_db.py CHANGED
@@ -202,7 +202,11 @@ class SystemDatabase:
202
202
 
203
203
  # Create a connection pool for the system database
204
204
  self.engine = sa.create_engine(
205
- system_db_url, pool_size=20, max_overflow=5, pool_timeout=30
205
+ system_db_url,
206
+ pool_size=config["database"]["sys_db_pool_size"],
207
+ max_overflow=0,
208
+ pool_timeout=30,
209
+ connect_args={"connect_timeout": 10},
206
210
  )
207
211
 
208
212
  # Run a schema migration for the system database
@@ -622,9 +626,11 @@ class SystemDatabase:
622
626
  with self.engine.begin() as c:
623
627
  row = c.execute(cmd).fetchone()
624
628
  if row is not None and row[0] != inputs:
625
- dbos_logger.warning(
626
- f"Workflow inputs for {workflow_uuid} changed since the first call! Use the original inputs."
627
- )
629
+ # In a distributed environment, scheduled workflows are enqueued multiple times with slightly different timestamps
630
+ if not workflow_uuid.startswith("sched-"):
631
+ dbos_logger.warning(
632
+ f"Workflow {workflow_uuid} has been called multiple times with different inputs"
633
+ )
628
634
  # TODO: actually changing the input
629
635
  if workflow_uuid in self._temp_txn_wf_ids:
630
636
  # Clean up the single-transaction tracking sets
@@ -8,9 +8,7 @@ language: python
8
8
  runtimeConfig:
9
9
  start:
10
10
  - "fastapi run ${package_name}/main.py"
11
+ database_url: ${DBOS_DATABASE_URL}
11
12
  database:
12
13
  migrate:
13
- - ${migration_command}
14
- telemetry:
15
- logs:
16
- logLevel: INFO
14
+ - ${migration_command}
dbos/_tracer.py CHANGED
@@ -27,14 +27,13 @@ class DBOSTracer:
27
27
  if os.environ.get("DBOS__CONSOLE_TRACES", None) is not None:
28
28
  processor = BatchSpanProcessor(ConsoleSpanExporter())
29
29
  provider.add_span_processor(processor)
30
- otlp_traces_endpoint = (
30
+ otlp_traces_endpoints = (
31
31
  config.get("telemetry", {}).get("OTLPExporter", {}).get("tracesEndpoint") # type: ignore
32
32
  )
33
- if otlp_traces_endpoint:
34
- processor = BatchSpanProcessor(
35
- OTLPSpanExporter(endpoint=otlp_traces_endpoint)
36
- )
37
- provider.add_span_processor(processor)
33
+ if otlp_traces_endpoints:
34
+ for e in otlp_traces_endpoints:
35
+ processor = BatchSpanProcessor(OTLPSpanExporter(endpoint=e))
36
+ provider.add_span_processor(processor)
38
37
  trace.set_tracer_provider(provider)
39
38
 
40
39
  def set_provider(self, provider: Optional[TracerProvider]) -> None:
dbos/cli/cli.py CHANGED
@@ -41,7 +41,7 @@ def _on_windows() -> bool:
41
41
  help="Start your DBOS application using the start commands in 'dbos-config.yaml'"
42
42
  )
43
43
  def start() -> None:
44
- config = load_config()
44
+ config = load_config(run_process_config=False, silent=True)
45
45
  start_commands = config["runtimeConfig"]["start"]
46
46
  typer.echo("Executing start commands from 'dbos-config.yaml'")
47
47
  for command in start_commands:
@@ -12,10 +12,13 @@
12
12
  "type": "string",
13
13
  "description": "The language used in your application",
14
14
  "enum": [
15
- "typescript",
16
15
  "python"
17
16
  ]
18
17
  },
18
+ "database_url": {
19
+ "type": ["string", "null"],
20
+ "description": "The URL of the application database"
21
+ },
19
22
  "database": {
20
23
  "type": "object",
21
24
  "additionalProperties": false,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dbos
3
- Version: 0.23.0a14
3
+ Version: 0.24.0
4
4
  Summary: Ultra-lightweight durable execution in Python
5
5
  Author-Email: "DBOS, Inc." <contact@dbos.dev>
6
6
  License: MIT
@@ -18,7 +18,6 @@ Requires-Dist: python-dateutil>=2.9.0.post0
18
18
  Requires-Dist: fastapi[standard]>=0.115.2
19
19
  Requires-Dist: tomlkit>=0.13.2
20
20
  Requires-Dist: psycopg[binary]>=3.1
21
- Requires-Dist: fastapi-cli==0.0.5
22
21
  Requires-Dist: docker>=7.1.0
23
22
  Requires-Dist: cryptography>=43.0.3
24
23
  Requires-Dist: rich>=13.9.4
@@ -1,30 +1,30 @@
1
- dbos-0.23.0a14.dist-info/METADATA,sha256=z88O0QiIfVU-VrNs6Udtgiw5G0asAkl6x6ugTrG7wHk,5556
2
- dbos-0.23.0a14.dist-info/WHEEL,sha256=thaaA2w1JzcGC48WYufAs8nrYZjJm8LqNfnXFOFyCC4,90
3
- dbos-0.23.0a14.dist-info/entry_points.txt,sha256=_QOQ3tVfEjtjBlr1jS4sHqHya9lI2aIEIWkz8dqYp14,58
4
- dbos-0.23.0a14.dist-info/licenses/LICENSE,sha256=VGZit_a5-kdw9WT6fY5jxAWVwGQzgLFyPWrcVVUhVNU,1067
5
- dbos/__init__.py,sha256=CxRHBHEthPL4PZoLbZhp3rdm44-KkRTT2-7DkK9d4QQ,724
1
+ dbos-0.24.0.dist-info/METADATA,sha256=I8cwgtPEDDay3wENxVS_eGDuAY8Wh8YHlCjSrcWfLpI,5519
2
+ dbos-0.24.0.dist-info/WHEEL,sha256=thaaA2w1JzcGC48WYufAs8nrYZjJm8LqNfnXFOFyCC4,90
3
+ dbos-0.24.0.dist-info/entry_points.txt,sha256=_QOQ3tVfEjtjBlr1jS4sHqHya9lI2aIEIWkz8dqYp14,58
4
+ dbos-0.24.0.dist-info/licenses/LICENSE,sha256=VGZit_a5-kdw9WT6fY5jxAWVwGQzgLFyPWrcVVUhVNU,1067
5
+ dbos/__init__.py,sha256=uq9LP5uY96kIS9N0yKqlvDwADmtg_Hl30uSUhyuUr-4,754
6
6
  dbos/__main__.py,sha256=P7jAr-7L9XE5mrsQ7i4b-bLr2ap1tCQfhMByLCRWDj0,568
7
7
  dbos/_admin_server.py,sha256=YiVn5lywz2Vg8_juyNHOYl0HVEy48--7b4phwK7r92o,5732
8
- dbos/_app_db.py,sha256=QFL1ceCugJFj_LBvK_G_0tt5jjyTM-4KnqmhbuC1ggg,5826
8
+ dbos/_app_db.py,sha256=4EGrYL14rVx96TXn34hoibN9ltf4-2DKcj6nd-HvBxA,6262
9
9
  dbos/_classproperty.py,sha256=f0X-_BySzn3yFDRKB2JpCbLYQ9tLwt1XftfshvY7CBs,626
10
10
  dbos/_cloudutils/authentication.py,sha256=V0fCWQN9stCkhbuuxgPTGpvuQcDqfU3KAxPAh01vKW4,5007
11
11
  dbos/_cloudutils/cloudutils.py,sha256=YC7jGsIopT0KveLsqbRpQk2KlRBk-nIRC_UCgep4f3o,7797
12
12
  dbos/_cloudutils/databases.py,sha256=_shqaqSvhY4n2ScgQ8IP5PDZvzvcx3YBKV8fj-cxhSY,8543
13
- dbos/_conductor/conductor.py,sha256=uX6DsAw0vpu4Gf5pxZJL7YrMSfJptCvRCnt14AUURFo,11123
14
- dbos/_conductor/protocol.py,sha256=HLHS1bOdFdQhwA05wXDCd3O704ki72ju1UUBXz0UB-0,4841
13
+ dbos/_conductor/conductor.py,sha256=udu8atyYYrs5bCfokie9ttjHlIg0FMo1p0-24IoneFs,15252
14
+ dbos/_conductor/protocol.py,sha256=MWY3SuIeY6GN2Vg3wQjcxiT0d4zz4ccGzdEkmYYJ6t0,5633
15
15
  dbos/_context.py,sha256=Ue5qu3rzLfRmPkz-UUZi9ZS8iXpapRN0NTM4mbA2QmQ,17738
16
- dbos/_core.py,sha256=UQb068FT59Op-F5RmtxreSeSQ1_wljOso0dQCUOPrC4,37528
16
+ dbos/_core.py,sha256=_a_rSkAWNLoHqzQbkqez0mpctkjDs301123ti3wmKHk,41340
17
17
  dbos/_croniter.py,sha256=XHAyUyibs_59sJQfSNWkP7rqQY6_XrlfuuCxk4jYqek,47559
18
- dbos/_db_wizard.py,sha256=6tfJaCRa1NtkUdNW75a2yvi_mEgnPJ9C1HP2zPG1hCU,8067
19
- dbos/_dbos.py,sha256=0kX3fgdTqAn-eMKSbh73LFVR08YPMoB030g4dzvc9Yk,41150
20
- dbos/_dbos_config.py,sha256=_VETbEsMZ66563A8sX05B_coKz2BrILbIm9H5BmnPmk,9572
21
- dbos/_debug.py,sha256=wcvjM2k4BrK7mlYjImUZXNBUB00fPGjQrNimZXlj76c,1491
22
- dbos/_error.py,sha256=xqB7b7g5AF_OwOvqLKLXL1xldn2gAtORix2ZC2B8zK0,5089
18
+ dbos/_db_wizard.py,sha256=YEW2qoy6hfHQv2fZ_4nHiPUeHMFofPpNTolJ1Kvw7AQ,8394
19
+ dbos/_dbos.py,sha256=ymQnOZ8RQehcPVAjjJipoW8StxM7bktTyT_4a_Zlse8,43599
20
+ dbos/_dbos_config.py,sha256=rWGy8mB7uLGRgkAybBEz-ogsJQYJpXY41cXNy5eITMs,21513
21
+ dbos/_debug.py,sha256=mmgvLkqlrljMBBow9wk01PPur9kUf2rI_11dTJXY4gw,1822
22
+ dbos/_error.py,sha256=B6Y9XLS1f6yrawxB2uAEYFMxFwk9BHhdxPNddKco-Fw,5399
23
23
  dbos/_fastapi.py,sha256=ke03vqsSYDnO6XeOtOVFXj0-f-v1MGsOxa9McaROvNc,3616
24
24
  dbos/_flask.py,sha256=DZKUZR5-xOzPI7tYZ53r2PvvHVoAb8SYwLzMVFsVfjI,2608
25
25
  dbos/_kafka.py,sha256=o6DbwnsYRDtvVTZVsN7BAK8cdP79AfoWX3Q7CGY2Yuo,4199
26
26
  dbos/_kafka_message.py,sha256=NYvOXNG3Qn7bghn1pv3fg4Pbs86ILZGcK4IB-MLUNu0,409
27
- dbos/_logger.py,sha256=utroNAXW71MLYb5D3lsM5xifXT19n5mAidyW-4kwyMA,3499
27
+ dbos/_logger.py,sha256=pSP-CyzHUR6ypousTaeKe2zYMKSqvrbsFru8HJpBHsA,3546
28
28
  dbos/_migrations/env.py,sha256=38SIGVbmn_VV2x2u1aHLcPOoWgZ84eCymf3g_NljmbU,1626
29
29
  dbos/_migrations/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
30
30
  dbos/_migrations/versions/04ca4f231047_workflow_queues_executor_id.py,sha256=ICLPl8CN9tQXMsLDsAj8z1TsL831-Z3F8jSBvrR-wyw,736
@@ -35,34 +35,34 @@ dbos/_migrations/versions/d76646551a6b_job_queue_limiter.py,sha256=8PyFi8rd6CN-m
35
35
  dbos/_migrations/versions/d76646551a6c_workflow_queue.py,sha256=G942nophZ2uC2vc4hGBC02Ptng1715roTjY3xiyzZU4,729
36
36
  dbos/_migrations/versions/eab0cc1d9a14_job_queue.py,sha256=uvhFOtqbBreCePhAxZfIT0qCAI7BiZTou9wt6QnbY7c,1412
37
37
  dbos/_outcome.py,sha256=FDMgWVjZ06vm9xO-38H17mTqBImUYQxgKs_bDCSIAhE,6648
38
- dbos/_queue.py,sha256=I2gBc7zQ4G0vyDDBnKwIFzxtqfD7DxHO2IZ41brFSOM,2927
38
+ dbos/_queue.py,sha256=OWUtbBAqdkDAArFWkwlF8STxykV4iQmrZxrF-_lavh4,3341
39
39
  dbos/_recovery.py,sha256=4KyZb0XJEUGH7ekYT1kpx38i6y5vygPeH75Ta7RZjYo,2596
40
40
  dbos/_registrations.py,sha256=_zy6k944Ll8QwqU12Kr3OP23ukVtm8axPNN1TS_kJRc,6717
41
41
  dbos/_request.py,sha256=cX1B3Atlh160phgS35gF1VEEV4pD126c9F3BDgBmxZU,929
42
42
  dbos/_roles.py,sha256=iOsgmIAf1XVzxs3gYWdGRe1B880YfOw5fpU7Jwx8_A8,2271
43
- dbos/_scheduler.py,sha256=0I3e8Y-OIBG3wiUCIskShd-Sk_eUFCFyRB5u4L7IHXI,1940
43
+ dbos/_scheduler.py,sha256=boG4BdcncFa3WxR97T5Oou4ppR0TgrEa2QQkjzpFEHU,2028
44
44
  dbos/_schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
45
  dbos/_schemas/application_database.py,sha256=KeyoPrF7hy_ODXV7QNike_VFSD74QBRfQ76D7QyE9HI,966
46
46
  dbos/_schemas/system_database.py,sha256=16146P4TLjAGjTYykOs_KUd2c_geJ5fuhk0ko85C65M,5211
47
47
  dbos/_serialization.py,sha256=YCYv0qKAwAZ1djZisBC7khvKqG-5OcIv9t9EC5PFIog,1743
48
- dbos/_sys_db.py,sha256=ul17Pe_qmslBMU1UZpY_UpCGnvUhcAxLAbSBps0YB20,64587
48
+ dbos/_sys_db.py,sha256=YzQv26TcF9W6nDDr9hbN147KnVmgBoodjWVop_sLkC4,64891
49
49
  dbos/_templates/dbos-db-starter/README.md,sha256=GhxhBj42wjTt1fWEtwNriHbJuKb66Vzu89G4pxNHw2g,930
50
50
  dbos/_templates/dbos-db-starter/__package/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
51
  dbos/_templates/dbos-db-starter/__package/main.py,sha256=eI0SS9Nwj-fldtiuSzIlIG6dC91GXXwdRsoHxv6S_WI,2719
52
52
  dbos/_templates/dbos-db-starter/__package/schema.py,sha256=7Z27JGC8yy7Z44cbVXIREYxtUhU4JVkLCp5Q7UahVQ0,260
53
53
  dbos/_templates/dbos-db-starter/alembic.ini,sha256=VKBn4Gy8mMuCdY7Hip1jmo3wEUJ1VG1aW7EqY0_n-as,3695
54
- dbos/_templates/dbos-db-starter/dbos-config.yaml.dbos,sha256=OMlcpdYUJKjyAme7phOz3pbn9upcIRjm42iwEThWUEQ,495
54
+ dbos/_templates/dbos-db-starter/dbos-config.yaml.dbos,sha256=Z-JC7wp-E9l7NiacjT7E66M812fYFVU3FSS7mNjb6XE,492
55
55
  dbos/_templates/dbos-db-starter/migrations/env.py.dbos,sha256=GUV6sjkDzf9Vl6wkGEd0RSkK-ftRfV6EUwSQdd0qFXg,2392
56
56
  dbos/_templates/dbos-db-starter/migrations/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
57
57
  dbos/_templates/dbos-db-starter/migrations/versions/2024_07_31_180642_init.py,sha256=MpS7LGaJS0CpvsjhfDkp9EJqvMvVCjRPfUp4c0aE2ys,941
58
58
  dbos/_templates/dbos-db-starter/start_postgres_docker.py,sha256=lQVLlYO5YkhGPEgPqwGc7Y8uDKse9HsWv5fynJEFJHM,1681
59
- dbos/_tracer.py,sha256=_Id9j9kCrptSNpEpLiRk_g5VPp-DrTWP1WNZInd5BA4,2439
59
+ dbos/_tracer.py,sha256=dFDSFlta-rfA3-ahIRLYwnnoAOmlavdxAGllqwFgnCA,2440
60
60
  dbos/_utils.py,sha256=wjOJzxN66IzL9p4dwcEmQACRQah_V09G6mJI2exQfOM,155
61
61
  dbos/_workflow_commands.py,sha256=CEzR5XghoZscbc2RHb9G-7Eoo4MMuzfeTo-QBZu4VPY,4690
62
62
  dbos/cli/_github_init.py,sha256=Y_bDF9gfO2jB1id4FV5h1oIxEJRWyqVjhb7bNEa5nQ0,3224
63
63
  dbos/cli/_template_init.py,sha256=AfuMaO8bmr9WsPNHr6j2cp7kjVVZDUpH7KpbTg0hhFs,2722
64
- dbos/cli/cli.py,sha256=ThomRytw7EP5iOcrjEgwnpaWgXNTLfnFEBBvCGHxtJs,15590
65
- dbos/dbos-config.schema.json,sha256=X5TpXNcARGceX0zQs0fVgtZW_Xj9uBbY5afPt9Rz9yk,5741
64
+ dbos/cli/cli.py,sha256=pet2vf4GLlSDfxfQbsplM9uewD6pJK2ZpLgZlwgBU5w,15627
65
+ dbos/dbos-config.schema.json,sha256=HtF_njVTGHLdzBGZ4OrGQz3qbPPT0Go-iwd1PgFVTNg,5847
66
66
  dbos/py.typed,sha256=QfzXT1Ktfk3Rj84akygc7_42z0lRpCq0Ilh8OXI6Zas,44
67
67
  version/__init__.py,sha256=L4sNxecRuqdtSFdpUGX3TtBi9KL3k7YsZVIvv-fv9-A,1678
68
- dbos-0.23.0a14.dist-info/RECORD,,
68
+ dbos-0.24.0.dist-info/RECORD,,