enflow-api / REDIS_SETUP.md
dhruv575
Setup and more markdown
ada5d3f

Redis Configuration for Enflow

This document explains how to configure Redis for Enflow's background task processing with Celery.

Overview

Enflow uses Redis as a message broker and result backend for Celery, which handles background tasks like:

  • Processing PDF logs with OCR
  • Running LLM analysis on log content
  • Generating incident forms

Configuration Options

You can configure Redis connection in two ways:

Option 1: Using Individual Environment Variables

Set these three environment variables:

REDIS_HOST=your-redis-hostname-or-ip
REDIS_PORT=your-redis-port (default: 6379)
REDIS_PASSWORD=your-redis-password

Option 2: Using a Single REDIS_URL

Alternatively, set a single REDIS_URL environment variable:

REDIS_URL=redis://:{password}@{host}:{port}/0

Example:

REDIS_URL=redis://:Nsdg@2314@2314@redis-12345.example.com:6379/0

Configuration in Celery

The configuration is handled in celery_config.py, which constructs the Redis URL from individual components if they're available, or uses the provided REDIS_URL directly.

Monitoring Celery Tasks

You can monitor Celery tasks in several ways:

  1. Celery Logs: Run the Celery worker with higher verbosity:

    celery -A utils.celery_tasks.celery_app worker --loglevel=info
    
  2. Flower (Optional): You can install and run Flower for a web-based monitoring UI:

    pip install flower
    celery -A utils.celery_tasks.celery_app flower
    

    Access the Flower dashboard at http://localhost:5555

Celery Task Configuration

Task-specific configurations are defined in celery_config.py, including:

  • Rate limits for various tasks
  • Task timeouts
  • Queue routing
  • Serialization formats

Troubleshooting Redis Connection

If you encounter issues connecting to Redis:

  1. Check if your Redis server is running
  2. Verify the host, port, and password are correct
  3. Check if any firewall is blocking the Redis port
  4. Ensure Redis is configured to accept remote connections (if connecting remotely)
  5. Try connecting using the redis-cli tool:
    redis-cli -h your-host -p your-port -a your-password ping
    
    You should receive "PONG" as the response if the connection is successful

Security Considerations

  1. Use a strong password for Redis authentication
  2. Don't expose your Redis server directly to the internet
  3. Consider using SSL/TLS if connecting to Redis over untrusted networks
  4. Avoid hardcoding Redis credentials in your application code