framework-integrations

Framework Integrations

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "framework-integrations" with this command: npx skills add vanman2024/ai-dev-marketplace/vanman2024-ai-dev-marketplace-framework-integrations

Framework Integrations

Purpose: Integrate Celery with Django, Flask, and FastAPI using framework-specific patterns and best practices.

Activation Triggers:

  • Setting up Celery with Django/Flask/FastAPI

  • Application context issues in tasks

  • Database transaction handling

  • Framework-specific configuration

  • Async worker setup

  • Request context in background tasks

Key Resources:

  • templates/django-integration/

  • Django app structure with Celery

  • templates/flask-integration/

  • Flask factory pattern with Celery

  • templates/fastapi-integration/

  • FastAPI async integration

  • templates/transaction-safe-django.py

  • Django transaction handling

  • templates/fastapi-background.py

  • FastAPI BackgroundTasks vs Celery

  • templates/flask-context.py

  • Flask app context in tasks

  • scripts/test-integration.sh

  • Test framework integration

  • scripts/validate-framework.sh

  • Validate framework setup

  • examples/

  • Complete integration examples

Integration Patterns

Django + Celery

Core Setup:

  • Install packages:

pip install celery django-celery-beat django-celery-results

  • Project structure:

myproject/ ├── myproject/ │ ├── init.py │ ├── celery.py # Celery app configuration │ ├── settings.py # Django settings with Celery config │ └── urls.py ├── myapp/ │ ├── tasks.py # Task definitions │ └── views.py # Views that call tasks └── manage.py

  • Use template:

Copy Django integration template

cp -r templates/django-integration/* /path/to/project/

Key Patterns:

Transaction-Safe Tasks:

  • Template: templates/transaction-safe-django.py

  • Use transaction.on_commit() to delay task execution

  • Prevents tasks from running before database commits

  • Essential for tasks that depend on database state

Django ORM in Tasks:

  • Always use ORM (don't pass model instances)

  • Pass primary keys, reload in task

  • Close connections explicitly if needed

  • Use CELERY_BROKER_CONNECTION_RETRY_ON_STARTUP = True

Configuration:

  • Set CELERY_BROKER_URL in settings.py

  • Configure CELERY_RESULT_BACKEND for task results

  • Use django-celery-beat for periodic tasks (admin UI)

  • Use django-celery-results to store results in Django DB

Flask + Celery

Core Setup:

  • Install packages:

pip install celery flask

  • Factory pattern structure:

myapp/ ├── init.py # Flask app factory ├── celery.py # Celery app with Flask context ├── tasks.py # Task definitions ├── views.py # Routes └── config.py # Configuration

  • Use template:

Copy Flask integration template

cp -r templates/flask-integration/* /path/to/project/

Key Patterns:

Application Context:

  • Template: templates/flask-context.py

  • Use app.app_context() for database/config access

  • Required for Flask-SQLAlchemy, Flask-Mail, etc.

  • Push context in task decorator

Factory Pattern:

  • Create Celery app that creates Flask app internally

  • Subclass Celery task to push app context

  • Allows tasks to access Flask extensions

  • Essential for modular Flask apps

Configuration:

  • Use Flask config for broker/backend URLs

  • Set CELERY_BROKER_URL from app.config

  • Share config between Flask and Celery

  • Load different configs per environment

FastAPI + Celery

Core Setup:

  • Install packages:

pip install celery fastapi uvicorn

  • Async structure:

app/ ├── main.py # FastAPI app ├── celery_app.py # Celery configuration ├── tasks.py # Task definitions ├── routers/ │ └── api.py # API routes └── config.py # Settings

  • Use template:

Copy FastAPI integration template

cp -r templates/fastapi-integration/* /path/to/project/

Key Patterns:

Async Tasks:

  • Celery tasks can be async or sync

  • FastAPI endpoints are async by default

  • Use .delay() or .apply_async() from sync context

  • Use asyncio.create_task() for FastAPI BackgroundTasks

BackgroundTasks vs Celery:

  • Template: templates/fastapi-background.py

  • FastAPI BackgroundTasks: Short tasks (<30s), no retries, dies with request

  • Celery: Long tasks, retries, persistent, distributed workers

  • Use both: BackgroundTasks for logging, Celery for heavy work

Dependency Injection:

  • Don't inject FastAPI dependencies into Celery tasks

  • Tasks run in separate worker processes

  • Pass data explicitly, not dependency objects

  • Reload database objects in task

Configuration:

  • Use Pydantic Settings for both FastAPI and Celery

  • Share config class between apps

  • Set broker/backend from environment variables

  • Use app.state for shared resources (if needed)

Common Integration Issues

Database Connections

Problem: "Lost connection to MySQL/Postgres during task"

Solution:

Close connections before task runs (Django)

from django.db import connection connection.close()

Or configure connection pooling

CELERY_BROKER_POOL_LIMIT = None # Unlimited DATABASES = { 'default': { 'CONN_MAX_AGE': 0, # Close after request } }

Application Context

Problem: "Working outside of application context" (Flask)

Solution:

Use context template

from templates.flask_context import make_celery celery = make_celery(app)

Or manually push context

@celery.task def my_task(): with app.app_context(): # Access db, config, etc. pass

Transaction Timing

Problem: Task runs before database commit (Django)

Solution:

Use on_commit

from django.db import transaction

def my_view(request): obj = MyModel.objects.create(name="test") transaction.on_commit( lambda: process_object.delay(obj.id) )

Async/Sync Mixing

Problem: "Cannot call async function from sync context" (FastAPI)

Solution:

Celery task (sync or async)

@celery.task async def process_data(data): # Can use async here result = await some_async_function(data) return result

FastAPI endpoint (async)

@app.post("/process") async def process(data: dict): # Call Celery from async context task = process_data.delay(data) return {"task_id": task.id}

Validation & Testing

Validate Framework Setup

Check integration is configured correctly

./scripts/validate-framework.sh django ./scripts/validate-framework.sh flask ./scripts/validate-framework.sh fastapi

Checks:

  • Required packages installed

  • Celery app configured correctly

  • Framework config has broker URL

  • Task discovery working

  • App context handling (Flask)

  • Transaction handling (Django)

Test Integration

Run integration tests

./scripts/test-integration.sh django ./scripts/test-integration.sh flask ./scripts/test-integration.sh fastapi

Tests:

  • Task execution from framework

  • Database access in tasks

  • Context handling

  • Transaction safety

  • Async task execution (FastAPI)

  • Error propagation

Security Considerations

CRITICAL: Never hardcode credentials in integration code

✅ CORRECT:

Django settings.py

CELERY_BROKER_URL = os.getenv('CELERY_BROKER_URL', 'redis://your_redis_url_here')

Flask config.py

CELERY_BROKER_URL = os.environ.get('CELERY_BROKER_URL', 'redis://your_redis_url_here')

FastAPI config.py

class Settings(BaseSettings): celery_broker_url: str = "redis://your_redis_url_here"

class Config:
    env_file = ".env"

❌ WRONG:

CELERY_BROKER_URL = "redis://actual-password@redis.example.com" CELERY_BROKER_URL = "amqp://user:real_password@rabbitmq"

Always:

  • Use environment variables for broker URLs

  • Use placeholders in examples: your_redis_url_here

  • Add .env to .gitignore

  • Document where to obtain credentials

  • Never commit actual connection strings

Framework-Specific Resources

Django

  • Template: templates/django-integration/

  • Transaction Safety: templates/transaction-safe-django.py

  • Example: examples/django-complete-setup.md

  • Includes: settings.py, celery.py, tasks.py, views.py

Flask

  • Template: templates/flask-integration/

  • Context Handling: templates/flask-context.py

  • Example: examples/flask-factory-pattern.md

  • Includes: Factory pattern, app context, extensions

FastAPI

  • Template: templates/fastapi-integration/

  • Background Tasks: templates/fastapi-background.py

  • Example: examples/fastapi-async.md

  • Includes: Async tasks, dependency injection, BackgroundTasks vs Celery

Quick Reference

Framework Context Needed Transaction Safe Async Support

Django Auto Use on_commit Via celery

Flask Manual push N/A Via celery

FastAPI Not needed N/A Native

Package Purpose Required For

django-celery-beat

Periodic tasks UI Django admin scheduling

django-celery-results

Store results in DB Django result persistence

flask

Web framework Flask integration

fastapi[all]

Async web framework FastAPI integration

Supported Frameworks: Django 4+, Flask 2+, FastAPI 0.100+ Celery Version: 5.3+ Python: 3.9+

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

document-parsers

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

stt-integration

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

model-routing-patterns

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

react-email-templates

No summary provided by upstream source.

Repository SourceNeeds Review