目录结构

当你初始化一个新的 frappe-bench 目录时,你会得到一个类似如下的目录结构:

.
├── apps
 ├── frappe
├── config
 ├── redis_cache.conf
 ├── redis_queue.conf
 └── redis_socketio.conf
├── env
├── logs
├── Procfile
└── sites
 ├── apps.txt
 ├── assets
 ├── common_site_config.json
 └── site1.local
 ├── private
 ├── public
 └── site_config.json

apps(应用)

frappe 应用和其他基于 frappe 的应用都存放在此目录中。当你运行 bench new-app app_name 命令时,应用会在此目录中被初始化。你的自定义应用也存放在这里,你应该在此处进行编辑和开发。

了解更多关于应用的信息。

sites(站点)

站点从此目录中提供服务。当你运行 bench new-site site_name 命令时,站点会在此目录中被创建。站点根据其目录名称进行区分。

了解更多关于站点的信息。

logs(日志)

此目录用于存放来自各种进程的日志文件。每个日志文件根据其来源进程进行命名。

config(配置)

Frappe 使用 3 个 Redis 实例来管理缓存、任务队列和 socketio 通信。所有这些配置都存放在此目录中。

env(环境)

Python 虚拟环境存放在此目录中。基于 Frappe 的应用和 Python 包依赖都安装在这里。

Procfile(进程文件)

Frappe 使用基于 Procfile 的进程管理方式。默认的 Procfile 内容如下所示:

redis_cache: redis-server config/redis_cache.conf
redis_socketio: redis-server config/redis_socketio.conf
redis_queue: redis-server config/redis_queue.conf
web: bench serve --port 8000

socketio: /usr/bin/node apps/frappe/socketio.js

watch: bench watch

schedule: bench schedule
worker_short: bench worker --queue short --quiet
worker_long: bench worker --queue long --quiet
worker_default: bench worker --queue default --quiet

让我们看看每个进程的用途。

redis_cache:

用于内存缓存的 Redis。

redis_socketio:

用作 websocketio 进程之间实时通信的发布/订阅(pub/sub)Redis。

redis_queue:

用于管理后台任务队列的 Redis。

web:

基于 Werkzeug 的 Python Web 服务器。

socketio:

用于与浏览器建立 socketio 连接以实现实时通信的 Node 服务器。

watch:

使用 Rollup 打包 JS/CSS 资源的 Node 服务器。它也会在文件变更时重新构建文件。

schedule:

使用 Python RQ 的作业调度器。

worker_short:

超时时间(短)为 300 秒的 Python 工作进程。

worker_long:

超时时间(长)为 1500 秒的 Python 工作进程。

worker_default:

超时时间为 300 秒的 Python 工作进程。