
Updates logic to handle various version comparisons, ensuring more precise status returns based on version differences. Improves handling of older and newer versions to prevent mismatches and ensure appropriate compatibility status. Signed-off-by: -LAN- <laipz8200@outlook.com>
Dify Backend API
Usage
Important
In the v0.6.12 release, we deprecated
pip
as the package management tool for Dify API Backend service and replaced it withpoetry
.
-
Start the docker-compose stack
The backend require some middleware, including PostgreSQL, Redis, and Weaviate, which can be started together using
docker-compose
.cd ../docker cp middleware.env.example middleware.env # change the profile to other vector database if you are not using weaviate docker compose -f docker-compose.middleware.yaml --profile weaviate -p dify up -d cd ../api
-
Copy
.env.example
to.env
cp .env.example .env
-
Generate a
SECRET_KEY
in the.env
file.bash for Linux
sed -i "/^SECRET_KEY=/c\SECRET_KEY=$(openssl rand -base64 42)" .env
bash for Mac
secret_key=$(openssl rand -base64 42) sed -i '' "/^SECRET_KEY=/c\\ SECRET_KEY=${secret_key}" .env
-
Create environment.
Dify API service uses Poetry to manage dependencies. You can execute
poetry shell
to activate the environment. -
Install dependencies
poetry env use 3.12 poetry install
-
Run migrate
Before the first launch, migrate the database to the latest version.
poetry run python -m flask db upgrade
-
Start backend
poetry run python -m flask run --host 0.0.0.0 --port=5001 --debug
-
Start Dify web service.
-
Setup your application by visiting
http://localhost:3000
... -
If you need to handle and debug the async tasks (e.g. dataset importing and documents indexing), please start the worker service.
poetry run python -m celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace,app_deletion
Testing
-
Install dependencies for both the backend and the test environment
poetry install -C api --with dev
-
Run the tests locally with mocked system environment variables in
tool.pytest_env
section inpyproject.toml
poetry run -P api bash dev/pytest/pytest_all_tests.sh