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
muslpy 3.10–3.95 runs
installs and imports cleanly · install 0.0s · import 0.900s · 33.2MB
glibcpy 3.10–3.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.fixUpgrade 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.fixUpgrade 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.fixUpgrade 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.
fixFor 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.
fixInstead 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.
fixEnsure 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.
fixTry 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.