Skip to content

Dev: Technology Stack

Nils Philippsen edited this page Jun 23, 2022 · 1 revision

Python 3.8+

Version 3.8 of Python or later is required to run Duffy because previous versions have neither typing.Literal (which is used in some type hints and API models) nor unittest.mock.AsyncMock (which is used to mock asynchronous code in tests).

FastAPI + Uvicorn

FastAPI, an asynchronous Python web framework, is used as the basis for the current and legacy API web apps. Uvicorn is the ASGI web server running these apps.

SQLAlchemy 1.4 + Alembic

SQLAlchemy is an SQL toolkit and object relational mapper. To be future-proof, Duffy uses the new-style query API of upcoming SQLAlchemy 2.0 which is first available in version 1.4 of SQLAlchemy.

Alembic is the database migration toolkit for SQLAlchemy.

Celery

Duffy uses the Celery distributed task queue to execute longer-running and scheduled background tasks.

Ansible + Ansible Runner

Duffy uses Ansible playbooks (“batteries not included”) to provision and deprovision nodes.

Jinja2

Duffy uses Jinja2 templates to enable filtering/transforming variables in configuration.