Skip to content

Commit 5abd162

Browse files
authored
Readme Updates (#186)
1 parent cb8b9dc commit 5abd162

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

README.md

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11

22
<div align="center">
33

4-
# DBOS Transact: Ultra-Lightweight Durable Execution
4+
# DBOS Transact: A Lightweight Durable Execution Library Built on Postgres
55

66
#### [Documentation](https://docs.dbos.dev/) &nbsp;&nbsp;&nbsp;&nbsp; [Examples](https://docs.dbos.dev/examples) &nbsp;&nbsp;&nbsp;&nbsp; [Github](https://github.com/dbos-inc) &nbsp;&nbsp;&nbsp;&nbsp; [Discord](https://discord.com/invite/jsmC6pXGgX)
77
</div>
88

99
---
1010

11-
DBOS Transact is a Python library providing **ultra-lightweight durable execution**.
11+
DBOS Transact is a Python library for **ultra-lightweight durable execution**.
1212
For example:
1313

1414
```python
@@ -28,18 +28,23 @@ def workflow()
2828

2929
Durable execution means your program is **resilient to any failure**.
3030
If it is ever interrupted or crashes, all your workflows will automatically resume from the last completed step.
31-
If you want to see durable execution in action, check out [this demo app](https://demo-widget-store.cloud.dbos.dev/) (source code [here](https://github.com/dbos-inc/dbos-demo-apps/tree/main/python/widget-store)).
32-
No matter how many times you try to crash it, it always resumes from exactly where it left off!
31+
Durable execution helps solve many common problems:
3332

34-
Under the hood, DBOS Transact works by storing your program's execution state (which workflows are currently executing and which steps they've completed) in a Postgres database.
35-
So all you need to use it is a Postgres database to connect to&mdash;there's no need for a "workflow server."
36-
This approach is also incredibly fast, for example [25x faster than AWS Step Functions](https://www.dbos.dev/blog/dbos-vs-aws-step-functions-benchmark).
33+
- Orchestrating long-running or business-critical workflows so they seamlessly recover from any failure.
34+
- Running reliable background jobs with no timeouts.
35+
- Processing incoming events (e.g. from Kafka) exactly once.
36+
- Running a fault-tolerant distributed task queue.
37+
- Running a reliable cron scheduler.
38+
- Operating an AI agent, or anything that connects to an unreliable or non-deterministic API.
3739

38-
Some more cool features include:
40+
What’s unique about DBOS's implementation of durable execution is that it’s implemented in a **lightweight library** that’s **totally backed by Postgres**.
41+
To use DBOS, just `pip install` it and annotate your program with DBOS decorators.
42+
Under the hood, those decorators store your program's execution state (which workflows are currently executing and which steps they've completed) in a Postgres database.
43+
If your program crashes or is interrupted, they automatically recover its workflows from their stored state.
44+
So all you need to use DBOS is Postgres&mdash;there are no other dependencies you have to manage, no separate workflow server.
3945

40-
- Scheduled jobs&mdash;run your workflows exactly-once per time interval.
41-
- Exactly-once event processing&mdash;use workflows to process incoming events (for example, from a Kafka topic) exactly-once.
42-
- Observability&mdash;all workflows automatically emit [OpenTelemetry](https://opentelemetry.io/) traces.
46+
One big advantage of this approach is that you can add DBOS to **any** Python application&mdash;**it’s just a library**.
47+
You can use DBOS to add reliable background jobs or cron scheduling or queues to your app with no external dependencies except Postgres.
4348

4449
## Getting Started
4550

@@ -50,7 +55,7 @@ pip install dbos
5055
dbos init --config
5156
```
5257

53-
Then, try it out with this simple program (requires Postgres):
58+
Then, try it out with this simple program:
5459

5560
```python
5661
from fastapi import FastAPI
@@ -80,14 +85,14 @@ def fastapi_endpoint():
8085
dbos_workflow()
8186
```
8287

83-
Save the program into `main.py`, edit `dbos-config.yaml` to configure your Postgres connection settings, and start it with `fastapi run`.
88+
Save the program into `main.py` and start it with `fastapi run`.
8489
Visit `localhost:8000` in your browser to start the workflow.
8590
When prompted, press `Control + \` to force quit your application.
8691
It should crash midway through the workflow, having completed step one but not step two.
8792
Then, restart your app with `fastapi run`.
8893
It should resume the workflow from where it left off, completing step two without re-executing step one.
8994

90-
To learn how to build more complex workflows, see our [programming guide](https://docs.dbos.dev/python/programming-guide) or [examples](https://docs.dbos.dev/examples).
95+
To learn how to build more complex workflows, see the [programming guide](https://docs.dbos.dev/python/programming-guide) or [examples](https://docs.dbos.dev/examples).
9196

9297
## Documentation
9398

@@ -98,7 +103,7 @@ To learn how to build more complex workflows, see our [programming guide](https:
98103

99104
- [**AI-Powered Slackbot**](https://docs.dbos.dev/python/examples/rag-slackbot) &mdash; A Slackbot that answers questions about previous Slack conversations, using DBOS to durably orchestrate its RAG pipeline.
100105
- [**Widget Store**](https://docs.dbos.dev/python/examples/widget-store) &mdash; An online storefront that uses DBOS durable workflows to be resilient to any failure.
101-
- [**Earthquake Tracker**](https://docs.dbos.dev/python/examples/earthquake-tracker) &mdash; A real-time earthquake dashboard that uses DBOS to stream data from the USGS into Postgres, then visualizes it with Streamlit.
106+
- [**Scheduled Reminders**](https://docs.dbos.dev/python/examples/scheduled-reminders) &mdash; In just three lines of code, schedule an email to send days, weeks, or months in the future.
102107

103108
More examples [here](https://docs.dbos.dev/examples)!
104109

0 commit comments

Comments
 (0)