0354c7813e
Added a check to ensure that files have an extension before processing to avoid potential errors. Updated unit tests to reflect this requirement by including extensions in test data. This prevents exceptions from being raised due to missing file extension information. |
||
---|---|---|
.. | ||
.idea | ||
.vscode | ||
configs | ||
constants | ||
contexts | ||
controllers | ||
core | ||
docker | ||
events | ||
extensions | ||
factories | ||
fields | ||
libs | ||
migrations | ||
models | ||
schedule | ||
services | ||
tasks | ||
templates | ||
tests | ||
.dockerignore | ||
.env.example | ||
app_factory.py | ||
app.py | ||
commands.py | ||
Dockerfile | ||
poetry.lock | ||
poetry.toml | ||
pyproject.toml | ||
pytest.ini | ||
README.md |
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
-
Generate a
SECRET_KEY
in the.env
file.sed -i "/^SECRET_KEY=/c\SECRET_KEY=$(openssl rand -base64 42)" .env
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.10 poetry install
In case of contributors missing to update dependencies for
pyproject.toml
, you can perform the following shell instead.poetry shell # activate current environment poetry add $(cat requirements.txt) # install dependencies of production and update pyproject.toml poetry add $(cat requirements-dev.txt) --group dev # install dependencies of development and update pyproject.toml
-
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 -C api bash dev/pytest/pytest_all_tests.sh