Python 运行器目前为测试版本。需要等 SeaTable 2.0 版本发布后才正式可用。
从 4.3 版本开始,我们建议您使用更方便的部署方法 部署 SeaTable Python 运行器 (新)
SeaTable 的 Python 脚本运行包含多个部分,SeaTable, Python Runner, SeaTable FAAS Scheduler等,它们的功能与关系如下
Python Runner 可以和 SeaTable FAAS Scheduler 可以部署到同一机器,结构图如下
如若你需要运行大量的 Python 脚本,可以多部署几台 Python Runner,在它们之前安排一个 load balance 组件即可,结构图如下
我们建议把 Python Runner 部署在 /opt/seatable-python-runner 目录下,目录结构如下
/opt/seatable-python-runner
├── logs (日志文件)
├── conf (配置文件)
├── init.sh (初始化脚本)
├── start.sh (启动脚本)
├── stop.sh (关闭脚本)
└── 其他代码文件
seatable-python-runner 的服务需要直接在宿主机上运行,所以需要用户自己下载软件包,下载完成后解压并进入项目目录
unzip seatable-python-runner-1.x.x.zip -d /opt && cd /opt/seatable-python-runner
sudo pip3 install -r server_requirements.txt
拉取 SeaTable Python Runner 依赖镜像
docker pull seatable/python-runner:latest
您可以在官方 docker仓库 中找到 SeaTable Python Runner 依赖镜像的所有版本 。
使用以下命令初始化服务
sudo ./init.sh
使用以下命令修改配置文件
vim conf/seatable_python_runner_settings.py
添加服务所使用到的配置
SCHEDULER_URL = 'https://demo.faas-scheduler.seatable.com' # seatable-faas-scheduler 的 URL, 如果使用 IP 地址的话,应为 http(s)://IP:PORT,即表示 seatable-faas-scheduler 的服务地址
需要 Seatable Python Runner 软件包版本在 2.0.3 版本及以后,并且镜像 tag 在 2.5.4 及以后
在配置文件中添加如下配置修改时区,如若没有配置,默认为系统时区,如若读取不到系统时区,则为 UTC 时区
TIME_ZONE = 'Asia/Shanghai'
如果版本不满足条件,时区为 UTC
相关文档:
对脚本运行限制时间,默认为 15 分钟
SUB_PROCESS_TIMEOUT = 60 * 15 # 15 分钟
需要 Seatable Python Runner 软件包版本在 2.0.4 版本及以后,并且镜像 tag 在 2.5.4 及以后
由于用户网络环境各不相同,如果 Seatable Python Runner 只可访问内网不可访问外网的情况下,则不可以下载脚本并运行。为了解决这个问题,新增加两个配置,可以使得 Seatable Python Runner 从内网访问下载脚本
在配置文件中添加如下配置并保存
ALTERNATIVE_FILE_SERVER_ROOT = 'http://xxx.xxx.xxx.xxx:xxx/' # 内网 FILE_SERVER_ROOT 地址
USE_ALTERNATIVE_FILE_SERVER_ROOT = True
在配置文件中,添加或修改如下内容
CONTAINER_MEMORY = '2g' # 最大2GB的内存
有些系统,如Ubuntu或基于Debian的系统,不支持限制容器内存,运行脚本时会看到类似如下警告
WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
这种情况下,可以把 CONTAINER_MEMORY 设置为空
CONTAINER_MEMORY = ''
或者修改宿主机的配置以便支持上面的选项:
sudo vim /etc/default/grub
添加或修改以下内容
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
保存并退出文件,更新 GRUB
sudo update-grub
重启宿主机,配置生效
相关文档
需要 Seatable Python Runner 软件包版本 2.0.5 及以后,并且镜像 tag 在 2.5.4 及以后,实验性功能,请谨慎修改
由于客户需求各异,从 2.0.5 版本及以后,在 OTHER_OPTIONS 中可以设置所有 docker 官方文档中的支持命令,但选项必须以 --\<option-name>=\<value> 的形式设置,例如需要挂载目录到容器内
OTHER_OPTIONS = [
"--volume=/home/seatable:/data" # 宿主机 /home/seatable 挂载到容器内 /data
]
Python runner 使用 uwsgi 运行,请以您自己的偏好或者符合您工作需求的方式编辑
使用以下命令修改 uwsgi 配置文件
vim conf/seatable_python_runner.ini
下面所示配置为默认配置
[uwsgi]
http = :8080 (端口)
process = 4 (进程数)
threads = 2 (线程数)
sudo ./start.sh
sudo ./stop.sh
启动/终止脚本是一系列操作的合集,您可以根据自己的需要进行二次编辑
注意:部署 Scheduler 要求 Docker 版本为 20.10.10 或更高版本
我们建议把 Scheduler 部署到 /opt/seatable-faas-scheduler 下,目录结构如下
/opt/seatable-faas-scheduler
├── docker-compose.yml
├── shared
│ ├── seatable-faas-scheduler
│ │ ├── conf (配置文件)
│ │ ├── scripts (脚本文件)
│ │ └── logs (日志文件)
│ ├── nginx-logs (Nginx 日志)
│ └── ssl (SSL 证书)
└── mysql-data (数据库持久化目录)
先创建目录
mkdir /opt/seatable-faas-scheduler
拉取 SeaTable FAAS Scheduler 镜像
docker pull seatable/seatable-faas-scheduler:latest
您可以在官方 docker仓库 中找到 SeaTable FAAS Scheduler 的所有版本 。
根据您需要的版本,下载 docker-compose.yml
将示例文件下载到 /opt/seatable-faas-scheduler
, 然后根据您的环境修改文件, 需要修改以下字段
使用以下命令初始化数据库
docker compose up
注意:您应该在 docker-compose.yml
文件所在的目录中运行上述命令。
稍等片刻,当您在输出日志中看到 This is a idle script (infinite loop) to keep container running
时,数据库已初始化成功。
然后按键盘的 Ctrl + C
来结束初始化命令。
使用以下命令修改配置文件
vim /您的 SeaTable FAAS Scheduler 数据卷目录/seatable-faas-scheduler/conf/seatable_faas_scheduler_settings.py
需要修改以下配置项
DTABLE_WEB_SERVICE_URL = 'https://demo.seatable.com' # SeaTable 域名
RUNNER_URL = 'https://demo.runner.seatable.com' # Python 运行器域名
# 若Python 运行器与 SeaTable FAAS Scheduler 运行在同一宿主机上,那么需要配置为 'http://host.docker.internal:8080'(不能为 'http://localhost:8080'), 或者 'http://<内网地址>:端口'
SEATABLE_FAAS_AUTH_TOKEN = '***' # 仅复制此配置项,用来修改 SeaTable 配置文件
使用以下命令修改 SeaTable 配置文件
vim /您的 SeaTable 数据卷目录/seatable/conf/dtable_web_settings.py
需要修改以下配置项
SEATABLE_FAAS_URL = '***' # seatable-faas-scheduler 的地址
SEATABLE_FAAS_AUTH_TOKEN = '***' # 与 seatable_faas_scheduler_settings.py 中的配置相同
设置脚本超时时间,在软件包已经设置了超时时间,此处需要和软件包中的配置相同,默认 15 分钟
SUB_PROCESS_TIMEOUT = 60 * 15 # 15 分钟
现在,您可以启动 SeaTable FAAS Scheduler 服务
docker compose up -d
# 重启 SeaTable 服务
docker exec -d seatable /shared/seatable/scripts/seatable.sh restart
接下来,您可以通过 SeaTable 测试 Python 运行器功能。
如果您在 “ docker-compose.yml” 中将 SEATABLE_FAAS_SCHEDULER_SERVER_LETSENCRYPT 设置为 True,则容器将自动为您请求一个 Letsencrypt 签名的 SSL 证书。
例如
seatable-faas-scheduler:
...
ports:
- "80:80"
- "443:443"
...
environment:
...
- SEATABLE_FAAS_SCHEDULER_SERVER_LETSENCRYPT=True # 默认值为 False。 是否使用加密证书
- SEATABLE_FAAS_SCHEDULER_SERVER_HOSTNAME=demo.faas-scheduler.seatable.com # 指定启用 https 时的主机名
注意:由于 Nginx 配置文件仅在首次运行容器时自动生成,因此最好在首次执行 docker-compose up -d 命令之前将 SEATABLE_FAAS_SCHEDULER_SERVER_LETSENCRYPT 设置为 True。
添加您自己的 SSL 证书
/您的 SeaTable FAAS Scheduler 数据卷目录/ssl/
/您的 SeaTable FAAS Scheduler 数据卷目录/seatable-faas-scheduler/conf/nginx.conf
docker exec -it seatable-faas-scheduler /usr/sbin/nginx -s reload
例如
server {
if ($host = demo.faas-scheduler.seatable.com) {
return 301 https://$host$request_uri;
}
listen 80;
server_name demo.faas-scheduler.seatable.com;
return 404;
}
server {
server_name demo.faas-scheduler.seatable.com;
listen 443 ssl;
ssl_certificate /shared/ssl/<your-ssl.cer>;
ssl_certificate_key /shared/ssl/<your-ssl.key>;
proxy_set_header X-Forwarded-For $remote_addr;
......
所有配置文件都在 /您的 SeaTable FAAS Scheduler 数据卷目录/seatable/conf/
下。
/您的 SeaTable FAAS Scheduler 数据卷目录/seatable-faas-scheduler/conf/seatable_faas_scheduler_settings.py
/您的 SeaTable FAAS Scheduler 数据卷目录/seatable-faas-scheduler/conf/nginx.conf
修改后,您需要重新启动 SeaTable FAAS Scheduler 服务器。
docker exec -d seatable-faas-scheduler /shared/seatable-faas-scheduler/scripts/seatable-faas-scheduler.sh restart
如果由于某种原因安装失败,如何从干净状态重新开始?
只需删除目录 /opt/seatable-faas-scheduler
,然后重新开始即可。
LetsEncrypt SSL 证书将要过期
如果证书没有自动更新,需要执行命令 /scripts/renew_cert.sh
以手动更新证书。
Last modified by seatable, 2024-03-21