z4j FastAPI framework adapter (Apache 2.0)
Project description
z4j-fastapi
License: Apache 2.0
FastAPI framework adapter for z4j. Integrates via FastAPI's lifespan hook - one context manager wraps the agent's lifecycle with your app's startup and shutdown.
Install
Pick your task engine and install with the matching extra. Each extra pulls the engine adapter AND its companion scheduler in one shot, so a fresh install never needs a second command.
pip install z4j-fastapi[arq] # arq + arq-cron (async-native, recommended)
pip install z4j-fastapi[taskiq] # TaskIQ + taskiq-scheduler (async, broker-flexible)
pip install z4j-fastapi[celery] # Celery + celery-beat (sync stack)
pip install z4j-fastapi[rq] # RQ + rq-scheduler
pip install z4j-fastapi[dramatiq] # Dramatiq + APScheduler
pip install z4j-fastapi[huey] # Huey + huey-periodic
pip install z4j-fastapi[all] # every engine (CI / kitchen sink)
pip install z4j-fastapi (no extra) installs only the framework adapter.
That's useful if you already manage engine packages elsewhere; otherwise
always pick an engine extra.
Configure
Mount the z4j lifespan in your FastAPI app:
from contextlib import asynccontextmanager
from fastapi import FastAPI
from z4j_fastapi import Z4JLifespan
z4j = Z4JLifespan(
brain_url="https://z4j.internal",
token="z4j_agent_...", # minted in the brain dashboard
project_id="my-project",
)
@asynccontextmanager
async def lifespan(app: FastAPI):
async with z4j(app):
yield
app = FastAPI(lifespan=lifespan)
Or, if you have no other lifespan logic:
from z4j_fastapi import Z4JLifespan
app = FastAPI(lifespan=Z4JLifespan(
brain_url="https://z4j.internal",
token="z4j_agent_...",
project_id="my-project",
))
On uvicorn startup the agent connects to the brain and z4j's dashboard
populates with every arq / Celery / Dramatiq / taskiq / Huey task your
workers register.
What it does
| Piece | Purpose |
|---|---|
Z4JLifespan(...) |
Async context manager matching FastAPI's lifespan contract |
| Graceful shutdown | Flushes the event buffer on await lifespan.aclose() |
| Async-native | Uses asyncio.create_task - never blocks the event loop |
Reliability
z4j-fastapi follows the project-wide safety rule: z4j never breaks
your FastAPI app. Agent failures are caught at the boundary and never
propagate into your request handlers.
Documentation
License
Apache 2.0 - see LICENSE. Your FastAPI application is never
AGPL-tainted by importing z4j_fastapi.
Links
- Homepage: https://z4j.com
- Documentation: https://z4j.dev
- Issues: https://github.com/z4jdev/z4j-fastapi/issues
- Changelog: CHANGELOG.md
- Security:
security@z4j.com(see SECURITY.md)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file z4j_fastapi-1.3.0.tar.gz.
File metadata
- Download URL: z4j_fastapi-1.3.0.tar.gz
- Upload date:
- Size: 29.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aad8f890bc955742ef17171bf05f75947ae15c2b93aa742d19a52995702bde4b
|
|
| MD5 |
2e518ad0ada6813e3eca663a8465d1cc
|
|
| BLAKE2b-256 |
a47ba6b500f3abb8c007fcc105d4eb018116d20f1dbc60f5b6fe2d5a5b903b01
|
File details
Details for the file z4j_fastapi-1.3.0-py3-none-any.whl.
File metadata
- Download URL: z4j_fastapi-1.3.0-py3-none-any.whl
- Upload date:
- Size: 21.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7fa24711e6085f8cf27e767ea1b37aa7ef26d47febe240e3705e5dc1c5ea03f
|
|
| MD5 |
508c7fe4240db2f8064f30fb4198b916
|
|
| BLAKE2b-256 |
06c4b9b9dfa769cbe3f0ff4a56ec0fe20a6ae407af9f6591ef7829cc7c962ac7
|