Registry / workflow / inngest

inngest

JSON →
library0.5.19pypypi✓ verified 21d ago

The Inngest Python SDK facilitates building and deploying reliable serverless functions and event-driven workflows. It provides tools for defining functions, handling events, and integrating with web frameworks like FastAPI. The library is actively maintained with frequent minor releases, currently at version 0.5.18, and requires Python 3.10 or newer.

pip install inngest
INSTALL
IMPORT
SIG · INNGEST
I
inngest
workflowpythonv0.5.19
Install
4.0s avg
Import
868ms
Disk
31MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v0.5.19 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.95 runs
installs and imports cleanly · install 0.0s · import 0.900s · 33.2MB
glibc
py 3.103.95 runs
installs and imports cleanly · install 4.0s · import 0.836s · 33MB
31MB installed
● package 31MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

Inngest
from inngest import Inngest
Event
from inngest import Event
Function
from inngest import Function
Step
from inngest import Step
InngestFastAPI
from inngest.framework.fastapi import InngestFastAPI
Required for integrating with FastAPI applications.
InngestFlask
from inngest.framework.flask import InngestFlask
Required for integrating with Flask applications.

This example sets up a simple Inngest function using FastAPI. The function `hello_world` is triggered by an `app/hello.world` event, sleeps for a second, and returns a greeting. It includes a FastAPI endpoint `/trigger` to manually send this event. Remember to install `fastapi` and `uvicorn`, and set `INGEST_EVENT_KEY` and `INGEST_SIGNING_KEY` environment variables (or disable production mode) to run this.

import os from fastapi import FastAPI from inngest import Inngest, Event, Function, Step from inngest.framework.fastapi import InngestFastAPI # Initialize Inngest client inngest_client = Inngest( app_id="my-python-app", event_key=os.environ.get('INGEST_EVENT_KEY', ''), signing_key=os.environ.get('INGEST_SIGNING_KEY', ''), # Uncomment for local dev without an Inngest deployment # is_production=False, ) # Define an Inngest function @inngest_client.function( Function( id="hello-world", name="Hello World Function", trigger=Event(name="app/hello.world"), ) ) async def hello_world(step: Step, event: Event): name = event.data.get("name", "world") await step.sleep("1s") message = await step.run( "say-hello", lambda: f"Hello, {name}! This is Inngest from Python." ) return {"message": message} # Initialize FastAPI app app = FastAPI() # Integrate Inngest with FastAPI inngest_fastapi = InngestFastAPI(inngest_client, [hello_world]) app.include_router(inngest_fastapi.create_router()) # Example endpoint to trigger the Inngest function @app.post("/trigger") async def trigger_hello_world(name: str = "friend"): await inngest_client.send(Event(name="app/hello.world", data={"name": name})) return {"status": "Event sent", "name": name} # To run this example: # 1. pip install fastapi uvicorn inngest # 2. Set environment variables: INGEST_EVENT_KEY and INGEST_SIGNING_KEY # (or comment them out and set is_production=False for local-only testing) # 3. Run: uvicorn main:app --reload # 4. Access Inngest dashboard or send a POST request to /trigger
Debug
Known issues
gotchaIn `Connect` mode, user code that blocked the main thread could cause the Inngest server to perceive the worker as unresponsive or dead, leading to unexpected disconnections or re-runs.
fix
Upgrade to `inngest>=0.5.17`. This version moves Connect internals into a dedicated thread, improving resilience. However, for best practices, still ensure long-running synchronous operations are offloaded or made asynchronous where possible.
affects: inngest < 0.5.17
gotchaEvent payloads larger than 1MB sent via Inngest `Connect` could be silently ignored or truncated without error feedback.
fix
Upgrade to `inngest>=0.5.15`. Always monitor your Inngest dashboard for successful event ingestion and verify that large payloads are processed correctly. Consider storing large data externally (e.g., S3) and passing references instead of the full payload.
affects: inngest < 0.5.15
gotchaParallel steps in workflows might not have executed correctly, potentially leading to serial execution or unexpected behavior for functions designed for concurrency.
fix
Upgrade to `inngest>=0.5.15` to resolve issues with parallel step execution. Thoroughly test any workflows utilizing `step.parallel()` after upgrading to confirm desired behavior.
affects: inngest < 0.5.15
Errors
Common errors & fixes
Your signing key is invalid
This error occurs when the Inngest SDK attempts to communicate with the Inngest Cloud in production mode without a valid signing key, or with an incorrect one. Inngest SDKs reject unauthenticated requests for security.
fix
For local development, set the `INNGEST_DEV=1` environment variable or pass `is_dev=True` to your Inngest client to use the Dev Server which does not require a signing key. For production, ensure the `INNGEST_SIGNING_KEY` environment variable is correctly set with a valid key from your Inngest dashboard.
TypeError: Inngest.create_function() got an unexpected keyword argument 'cron'
In the Inngest Python SDK, the `create_function` method expects scheduled function definitions to use `inngest.TriggerCron` within the `trigger` argument, not a direct `cron` keyword argument.
fix
Instead of `cron='...'`, use `trigger=inngest.TriggerCron('...')`. 

```python
from inngest import Inngest, TriggerCron

inngest_client = Inngest(app_id="my-app")

@inngest_client.create_function(
    fn_id="my-scheduled-function",
    trigger=TriggerCron("0 9 * * MON"), # Correct usage
)
def my_scheduled_function(ctx) -> str:
    return "Function ran on schedule"
```
ModuleNotFoundError: No module named 'inngest.flask'
This error typically indicates that the framework-specific integration module (e.g., `inngest.flask`, `inngest.fastapi`, `inngest.django`) cannot be found, often because the necessary framework dependencies are not installed, or the import path is incorrect.
fix
Ensure you have the correct framework installed (e.g., `pip install Flask` for `inngest.flask`) and that you are importing the `serve` function from the appropriate Inngest framework module. 

```python
# For Flask
import inngest.flask
# For FastAPI
import inngest.fastapi

# Or directly import serve
from inngest.flask import serve as flask_serve
```
This version of C:\Users\...\inngest.exe is not compatible with the version of Windows you're running.
This error occurs on Windows systems when the `inngest-cli` binary downloaded via `npm` or `npx` has compatibility issues with the specific Windows version or architecture, often due to Node.js or Go version mismatches during the CLI's build process.
fix
Try clearing your `npx` cache (`rm -rf ~/.npm/_npx`) and reinstalling. If the issue persists, consider downloading the `inngest.exe` binary directly from the official Inngest GitHub releases page for your architecture and running it manually. Alternatively, specify an older, compatible version of `inngest-cli` (e.g., `npx inngest-cli@0.14 dev`) if a newer version is causing issues.
Upgrade
Version history
0.5.19latest on PyPI · released Jun 23, 2026
Audit
Dependencies
httpxrequiredUsed for making HTTP requests to the Inngest API.
jsonschemarequiredUsed for validating event payloads.
pydanticrequiredUsed for data modeling and validation of Inngest structures.
Agent activity
17 hits · last 30 days
node
14
OpenAI (training)
2
Resources
inngest — pip install inngest · libregistry