Skip to main content

Upstash Workflow SDK

Upstash Workflow lets you write durable, reliable and performant serverless functions. Get delivery guarantees, automatic retries on failure, scheduling and more without managing any infrastructure.

See the documentation for more details

Quick Start

Here, we will briefly showcase how you can get started with Upstash Workflow using FastAPI.

Alternatively, you can check our quickstarts for different frameworks, including FastAPI and Next.js & FastAPI.

Install

First, create a new directory and set up a virtual environment:

python -m venv venv
source venv/bin/activate

Then, install the required packages:

pip install fastapi uvicorn upstash-workflow

Get QStash token

Go to Upstash Console and copy the QSTASH_TOKEN, set it in the .env file.

export QSTASH_TOKEN=

Define a Workflow Endpoint

To declare workflow endpoints, use the @serve.post decorator. Save the following code to main.py:

from fastapi import FastAPI
from upstash_workflow.fastapi import Serve
from upstash_workflow import AsyncWorkflowContext

app = FastAPI()
serve = Serve(app)

# mock function
def some_work(input: str) -> str:
    return f"processed '{input}'"

# serve endpoint which expects a string payload:
@serve.post("/example")
async def example(context: AsyncWorkflowContext[str]) -> None:
    # get request body:
    input = context.request_payload

    async def _step1() -> str:
        output = some_work(input)
        print("step 1 input", input, "output", output)
        return output

    # run the first step:
    result: str = await context.run("step1", _step1)

    async def _step2() -> None:
        output = some_work(result)
        print("step 2 input", result, "output", output)

    # run the second step:
    await context.run("step2", _step2)

In the example, you can see that steps are declared through the context object.

The kinds of steps which are available are:

  • context.run: execute a function
  • context.sleep: sleep for some time
  • context.sleep_until: sleep until some timestamp
  • context.call: make a third party call without consuming any runtime

You can learn more about these methods from our documentation.

Run the Server

Upstash Workflow needs a public URL to orchestrate the workflow. Check out our Local Development guide to learn how to set up a local tunnel.

Create the tunnel and set the UPSTASH_WORKFLOW_URL environment variable in the .env file with the public URL:

ngrok http localhost:8000
export UPSTASH_WORKFLOW_URL=

Then, set the environment variables:

source .env

Finally, run the server:

uvicorn main:app --reload

FastAPI server will be running at localhost:8000.

Contributing

Development

  1. Clone the repository
  2. Install Poetry
  3. Install dependencies with poetry install
  4. Create a .env file with cp .env.example .env and fill in the environment variables
  5. Run tests with poetry run pytest
  6. Format with poetry run ruff format .
  7. Check with poetry run ruff check .
  8. Type check with poetry run mypy --show-error-codes .

Metadata

Release files for upstash-workflow 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for upstash-workflow 2.0.0
File Size Uploaded Provenance Actions
upstash_workflow-2.0.0.tar.gz 30.8 kB Without provenance Details for upstash_workflow-2.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for upstash-workflow 2.0.0
File Interpreter ABI Platform Actions
upstash_workflow-2.0.0-py3-none-any.whl Python 3 none any Details for upstash_workflow-2.0.0-py3-none-any.whl

Total release size: 74.1 kB

Release files / upstash_workflow-2.0.0.tar.gz

Download URL upstash_workflow-2.0.0.tar.gz
Size 30.8 kB
Tags Source
SHA-256 checksum
How to use checksums
243945b20df4845a27be621748edf921382f182d8b117b19aa383d7e6c004f7b
BLAKE2b-256 checksum
How to use checksums
1abe0db68f4e9622b096d401353173076d8626f1a85ab58c944839dd245853c5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.8.18 Linux/6.17.0-1022-azure

Release files / upstash_workflow-2.0.0-py3-none-any.whl

Download URL upstash_workflow-2.0.0-py3-none-any.whl
Size 43.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
28cbaf1e6d23454623b6a18386b4884676afbca2d364a1534ca52f36deddd126
BLAKE2b-256 checksum
How to use checksums
b74b4105f31f600cda08bb511feaca8b4cde19e936ed5bac7e282e212d4ed46e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.8.18 Linux/6.17.0-1022-azure

Security for upstash-workflow 2.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page