#!/bin/bash set -e cd /app/api if [[ "${MIGRATION_ENABLED}" == "true" ]]; then echo "Running migrations" poetry run flask db upgrade fi if [[ "${MODE}" == "worker" ]]; then # Get the number of available CPU cores if [ "${CELERY_AUTO_SCALE,,}" = "true" ]; then AVAILABLE_CORES=$(nproc) MAX_WORKERS=${CELERY_MAX_WORKERS:-$AVAILABLE_CORES} MIN_WORKERS=${CELERY_MIN_WORKERS:-1} CONCURRENCY_OPTION="--autoscale=${MAX_WORKERS},${MIN_WORKERS}" else CONCURRENCY_OPTION="-c ${CELERY_WORKER_AMOUNT:-1}" fi exec poetry run celery -A app.celery worker \ -P ${CELERY_WORKER_CLASS:-gevent} \ $CONCURRENCY_OPTION \ --loglevel ${LOG_LEVEL} \ -Q ${CELERY_QUEUES:-dataset,mail,ops_trace,app_deletion} elif [[ "${MODE}" == "beat" ]]; then exec poetry run celery -A app.celery beat --loglevel ${LOG_LEVEL} else if [[ "${DEBUG}" == "true" ]]; then exec poetry run flask run \ --host=${DIFY_BIND_ADDRESS:-0.0.0.0} \ --port=7860 \ --debug else exec poetry run gunicorn \ --bind "0.0.0.0:7860" \ --workers ${SERVER_WORKER_AMOUNT:-1} \ --worker-class ${SERVER_WORKER_CLASS:-gevent} \ --timeout ${GUNICORN_TIMEOUT:-200} \ --preload \ app:app fi fi