docs(flows): explain persistence backend selection

This commit is contained in:
ViditOstwal
2026-09-18 14:12:59 +05:30
parent 1846c93dec
commit bf30195f6a
4 changed files with 168 additions and 0 deletions

View File

@@ -406,6 +406,48 @@ flow.kickoff()
يتيح مزخرف @persist الاستمرارية التلقائية للحالة في تدفقات CrewAI، مما يسمح لك بالحفاظ على حالة التدفق عبر عمليات إعادة التشغيل أو تنفيذات سير العمل المختلفة. يمكن تطبيق هذا المزخرف على مستوى الفئة أو مستوى الدالة، مما يوفر مرونة في كيفية إدارة استمرارية الحالة.
### اختيار واجهة الاستمرارية
SQLite هي واجهة التخزين الافتراضية. استخدم `@persist` بدون وسيطة عندما تكون الاستمرارية المحلية المعتمدة على ملف كافية.
```python
@persist
class MyFlow(Flow[MyState]):
...
```
لاختيار SQLite صراحةً، مثل التحكم في موقع ملف قاعدة البيانات، مرّر نسخة من `SQLiteFlowPersistence` إلى `@persist`:
```python
from crewai.flow.persistence import SQLiteFlowPersistence, persist
persistence = SQLiteFlowPersistence("flows.db")
@persist(persistence)
class MyFlow(Flow[MyState]):
...
```
لاستخدام MongoDB، ثبّت التبعية الاختيارية، واضبط سلسلة الاتصال، ثم مرّر `MongoDbFlowPersistence` صراحةً:
```bash
uv add 'crewai[mongodb]'
# Or: pip install 'crewai[mongodb]'
export MONGODB_CONNECTION_STRING='mongodb+srv://<user>:<password>@<cluster>/'
```
```python
from crewai.flow.persistence import MongoDbFlowPersistence, persist
persistence = MongoDbFlowPersistence()
@persist(persistence)
class MyFlow(Flow[MyState]):
...
```
يستخدم `MongoDbFlowPersistence` قاعدة بيانات `flow_persistence` افتراضيًا. اضبط `MONGODB_DATABASE` أو مرّر `database_name` لاختيار قاعدة بيانات أخرى. تستخدم استمرارية MongoDB المعاملات، لذا يجب أن يكون النشر MongoDB Atlas أو مجموعة متماثلة أو عنقودًا مجزأً؛ لا تدعم خوادم MongoDB المستقلة.
### الاستمرارية على مستوى الفئة
عند التطبيق على مستوى الفئة، يقوم مزخرف @persist باستمرارية حالات جميع دوال التدفق تلقائيًا:

View File

@@ -409,6 +409,48 @@ By providing both unstructured and structured state management options, CrewAI F
The @persist decorator enables automatic state persistence in CrewAI Flows, allowing you to maintain flow state across restarts or different workflow executions. This decorator can be applied at either the class level or method level, providing flexibility in how you manage state persistence.
### Choosing a Persistence Backend
SQLite is the default backend. Use `@persist` without an argument when local, file-based persistence is sufficient.
```python
@persist
class MyFlow(Flow[MyState]):
...
```
To choose SQLite explicitly, for example to control the database file location, pass a `SQLiteFlowPersistence` instance to `@persist`:
```python
from crewai.flow.persistence import SQLiteFlowPersistence, persist
persistence = SQLiteFlowPersistence("flows.db")
@persist(persistence)
class MyFlow(Flow[MyState]):
...
```
To use MongoDB, install the optional dependency, configure a connection string, and pass `MongoDbFlowPersistence` explicitly:
```bash
uv add 'crewai[mongodb]'
# Or: pip install 'crewai[mongodb]'
export MONGODB_CONNECTION_STRING='mongodb+srv://<user>:<password>@<cluster>/'
```
```python
from crewai.flow.persistence import MongoDbFlowPersistence, persist
persistence = MongoDbFlowPersistence()
@persist(persistence)
class MyFlow(Flow[MyState]):
...
```
`MongoDbFlowPersistence` uses the `flow_persistence` database by default. Set `MONGODB_DATABASE` or pass `database_name` to choose another database. MongoDB persistence uses transactions, so the deployment must be MongoDB Atlas, a replica set, or a sharded cluster; standalone MongoDB servers are not supported.
### Class-Level Persistence
When applied at the class level, the @persist decorator automatically persists all flow method states:

View File

@@ -399,6 +399,48 @@ CrewAI Flows는 비구조적 및 구조적 상태 관리 옵션을 모두 제공
@persist 데코레이터는 CrewAI 플로우에서 자동 상태 지속성을 활성화하여, 플로우 상태를 재시작이나 다른 워크플로우 실행 간에도 유지할 수 있도록 합니다. 이 데코레이터는 클래스 수준이나 메서드 수준 모두에 적용할 수 있어, 상태 지속성을 관리하는 데 유연성을 제공합니다.
### 지속성 백엔드 선택
SQLite가 기본 백엔드입니다. 로컬 파일 기반 지속성으로 충분한 경우 인자 없이 `@persist`를 사용하세요.
```python
@persist
class MyFlow(Flow[MyState]):
...
```
데이터베이스 파일 위치를 제어하는 것처럼 SQLite를 명시적으로 선택하려면 `SQLiteFlowPersistence` 인스턴스를 `@persist`에 전달하세요.
```python
from crewai.flow.persistence import SQLiteFlowPersistence, persist
persistence = SQLiteFlowPersistence("flows.db")
@persist(persistence)
class MyFlow(Flow[MyState]):
...
```
MongoDB를 사용하려면 선택 의존성을 설치하고 연결 문자열을 설정한 뒤 `MongoDbFlowPersistence`를 명시적으로 전달하세요.
```bash
uv add 'crewai[mongodb]'
# Or: pip install 'crewai[mongodb]'
export MONGODB_CONNECTION_STRING='mongodb+srv://<user>:<password>@<cluster>/'
```
```python
from crewai.flow.persistence import MongoDbFlowPersistence, persist
persistence = MongoDbFlowPersistence()
@persist(persistence)
class MyFlow(Flow[MyState]):
...
```
`MongoDbFlowPersistence`는 기본적으로 `flow_persistence` 데이터베이스를 사용합니다. 다른 데이터베이스를 선택하려면 `MONGODB_DATABASE`를 설정하거나 `database_name`을 전달하세요. MongoDB 지속성은 트랜잭션을 사용하므로 MongoDB Atlas, 레플리카 세트 또는 샤딩 클러스터가 필요합니다. 독립 실행형 MongoDB 서버는 지원되지 않습니다.
### 클래스 레벨 영속성
클래스 레벨에서 @persist 데코레이터를 적용하면 모든 flow 메서드 상태가 자동으로 영속됩니다:

View File

@@ -399,6 +399,48 @@ Ao oferecer as duas opções de gerenciamento de estado, o CrewAI Flows permite
O decorador @persist permite a persistência automática do estado nos flows do CrewAI, garantindo que você mantenha o estado do flow entre reinicializações ou execuções diferentes do workflow. Esse decorador pode ser aplicado tanto ao nível de classe, quanto ao nível de método, oferecendo flexibilidade sobre como gerenciar a persistência do estado.
### Escolhendo um Backend de Persistência
SQLite é o backend padrão. Use `@persist` sem argumento quando a persistência local baseada em arquivo for suficiente.
```python
@persist
class MyFlow(Flow[MyState]):
...
```
Para escolher SQLite explicitamente, por exemplo para controlar o local do arquivo de banco de dados, passe uma instância de `SQLiteFlowPersistence` para `@persist`:
```python
from crewai.flow.persistence import SQLiteFlowPersistence, persist
persistence = SQLiteFlowPersistence("flows.db")
@persist(persistence)
class MyFlow(Flow[MyState]):
...
```
Para usar MongoDB, instale a dependência opcional, configure uma string de conexão e passe `MongoDbFlowPersistence` explicitamente:
```bash
uv add 'crewai[mongodb]'
# Or: pip install 'crewai[mongodb]'
export MONGODB_CONNECTION_STRING='mongodb+srv://<user>:<password>@<cluster>/'
```
```python
from crewai.flow.persistence import MongoDbFlowPersistence, persist
persistence = MongoDbFlowPersistence()
@persist(persistence)
class MyFlow(Flow[MyState]):
...
```
`MongoDbFlowPersistence` usa o banco de dados `flow_persistence` por padrão. Defina `MONGODB_DATABASE` ou passe `database_name` para escolher outro banco de dados. A persistência MongoDB usa transações, portanto a implantação deve ser MongoDB Atlas, um conjunto de réplicas ou um cluster fragmentado; servidores MongoDB autônomos não são compatíveis.
### Persistência no Nível de Classe
Quando aplicado no nível da classe, o decorador @persist garante a persistência automática de todos os estados dos métodos do flow: