用于生成Jupyter报告的微服务
项目描述
Papermill Jupyter报告
通过执行笔记本并将其导出为静态HTML页面,Papermill Jupyter报告是一个微服务,它结合了 papermill 和 nbconvert 来生成Jupyter报告。
它可以作为一个独立的应用程序或作为JupyterHub服务运行。
工作流程如下所示。您可以
- 设置一个特定的URL来选择一个笔记本,并将查询参数作为参数传递,
- 或者交互式地选择一个笔记本并设置其参数。
特性
API描述 在这里。
该服务提供了两个特性
- 列出所有可用的报告模板(及其参数) 可用的模板都是存在于
template_root_dir
中的笔记本文件。 - 生成报告(即执行参数化的笔记本并将其转换为HTML)
仅支持Python笔记本的参数化笔记本。
配置
服务的可配置设置包括
broken_reports_dir
:破损笔记本将被复制的文件夹 - 它必须是notebook_dir
的子文件夹;默认 /home/USERNAME/broken_reportsconfig_file
:配置文件名;默认 papermill_service_configgit_auth
:Git认证(用户名:密码);默认 Nonenotebook_dir
:笔记本服务器根目录;默认 /home/USERNAME。这用于构建指向损坏的笔记本的链接。port
:服务端口;默认 8888template_root_dir
:服务器上包含笔记本模板的文件夹;默认 /opt/papermill_reporttemplate_dir
:包含笔记本模板的 Git 仓库文件夹;默认 "."template_git_url
:笔记本模板的 Git 仓库 URL 源;默认 Nonetemplate_paths
:在默认模板之前搜索服务网页 Jinja 模板的路径;默认 None
如果将字符串 USERNAME 用于
broken_reports_dir
或notebook_dir
,则将替换为用户的用户名。
注意
- 在 Unix 平台上,服务必须以
root
身份运行,因为报告进程通过su <user> --login
命令执行,以代表认证用户并重新设置环境变量。
开发
这个 Python 包旨在作为 JupyterHub Hub-Managed 服务 部署。
后果是
- 服务运行自己的 tornado 服务器。请求将通过 JupyterHub 内部代理从标准 URL
https://myhub.horse/services/my-service/
(注意所需的尾随/
)转发给它。 - 身份验证延迟到 JupyterHub
- 由于由 JupyterHub 管理,JupyterHub 将检查服务是否运行。如果不运行,它将重新启动它。此外,当 JupyterHub 被良好停止时,它将停止服务。
测试
此服务中有 2 个级别的测试。一些常规的 pytest
单元测试和一个 Dockerfile,以启动服务作为 JupyterHub 服务来启动集成环境。
单元测试
python -m install -r requirements.txt -r requirements_dev.txt
pytest papermill_report
与 JupyterHub 集成
要构建和启动集成环境
docker build -t papermill-report .
docker run -p 8000:8000 --rm papermill-report
Hub 已参数化(见 jupyterhub_config.py)为两个用户
- jovyan:管理员
- marc:用户
这两个账户都没有密码。
模板文件夹是此项目的 examples
文件夹。
您还可以通过访问有效端点手动测试服务
http://localhost:8000/services/report/
http://localhost:8000/services/report/broken_parameters.ipynb
http://localhost:8000/services/report/no_parameters.ipynb
http://localhost:8000/services/report/subfolder/simple_execute.ipynb&msg=hello
可以使用以下命令使用该环境自动执行集成测试
docker-compose -f e2e-tests/docker-compose.yml run e2e ./e2e-tests/run_e2e.sh
docker-compose -f e2e-tests/docker-compose.yml down