Cylc UI 服务器
项目描述
Cylc UI 服务器
此项目包含 Cylc UI 服务器,该服务器为 Cylc UI 提供服务并与运行的 Cylc 调度器进行通信。它还捆绑了 GUI。
简介
此存储库中的功能是运行 Cylc 网络用户界面所必需的。
此存储库提供了 Cylc 系统的以下组件。
-
UI
这是 Cylc 网络应用程序,提供对 Cylc 工作流的控制和监控功能。
注意 该 UI 在单独的存储库中开发 https://github.com/cylc/cylc-ui
-
UI服务器
这是一个用于提供Cylc Web UI服务的Web服务器。它连接到正在运行的流程和工作流数据库,以提供UI显示所需的信息。它是一个Jupyter服务器。
-
中心节点
在多用户设置中,它启动UI服务器,为运行中的服务器提供代理并处理身份验证。它是一个JupyterHub服务器。
安装
有关Cylc组件和全栈Cylc安装的更多信息,请参阅Cylc文档。
单用户设置
安装
Conda/Mamba(首选) | Pip |
---|---|
conda install cylc-uiserver-base |
pip install cylc-uiserver |
然后启动您的服务器
cylc gui
多用户设置
安装
Conda/Mamba(首选) | Pip + Npm |
---|---|
conda install cylc-uiserver |
pip install cylc-uiserver[hub] |
npm install configurable-http-proxy |
然后启动您的中心节点
cylc hub
软件包列表
有几个不同的软件包,以满足不同的需求。
工具 | 软件包 | 描述 | Cylc UI 服务器 | Jupyter Hub | 可配置HTTP代理 |
---|---|---|---|---|---|
Pip | cylc-uiserver | 单用户 | :heavy_check_mark | :x | :x |
conda | cylc-uiserver-base | 单用户 | :heavy_check_mark | :x | :x |
conda | cylc-uiserver-hub-base | 多用户(无代理) | :heavy_check_mark | :heavy_check_mark | :x |
Pip | cylc-uiserver[hub] | 多用户(无代理) | :heavy_check_mark | :heavy_check_mark | :x |
conda | cylc-uiserver | 多用户 | :heavy_check_mark | :heavy_check_mark | :heavy_check_mark |
可配置HTTP代理软件包(Node JS)提供了Jupyter Hub所需的反向代理,以便将用户的服务器汇集在单个URL后。可以通过conda install configurable-http-proxy
安装,但不能通过pip安装(因为它需要Node JS)
其他代理,包括Traefik代理(Python),也可以完成此任务,请参阅Jupyter Hub代理列表。
单独安装Jupyter Hub
开始使用Cylc和Jupyter Hub的最简单方法是将它们一起安装和部署,并通过cylc hub
命令启动Jupyter Hub。
conda install cylc-uiserver
cylc hub
但是,您也可以将Jupyter Hub从其部署的服务器(例如Jupyter Lab或Cylc UI服务器)中单独部署,并通过jupyterhub
命令启动它。
如果您将从Cylc UI服务器单独部署Jupyter Hub,以下配置可能相关
- Jupyter Hub的
spawner.cmd
决定了Jupyter Hub运行以启动用户服务器的命令。您可能希望使用包装脚本来激活所需的环境。 - Jupyter服务器
ServerApp.jpserver_extensions
配置决定了Jupyter服务器启动时激活哪些Jupyter服务器扩展(例如Jupyter Lab或Cylc UI服务器)。默认行为是激活任何已安装的扩展,但如果被覆盖,您可能需要在此处显式列出cylc-uiserver。 - Cylc的
jupyter_config.py
文件包含默认的Cylc配置。这适用于通过cylc hub
命令启动的中心节点,但不适用于通过jupyterhub
命令启动的中心节点。您可能希望将此文件中的一些配置包括到您的Jupyter Hub配置中。
运行
Cylc UIServer是Jupyter服务器扩展(如JupyterLab)。
单用户设置
作为独立服务器运行,使用URL令牌进行身份验证
# launch the Cylc GUI and open a browser tab
$ cylc gui
# alternatively the same app can be opened with the jupyter command
$ jupyter cylc
注意 默认情况下,身份验证由URL令牌提供。作为替代方案,可以配置密码(请参阅Jupyter服务器文档)。
没有针对用户的授权,因此拥有URL令牌的人可以完全访问服务器。
多用户设置
在具有权限作为其他用户启动cylc
进程的用户帐户下运行中央JupyterHub服务器。
# launch the Cylc Hub
# (the default URL is http://localhost:8000)
$ cylc hub
然后用户通过中心节点进行身份验证,该中心节点启动并管理他们的UI服务器。
配置
中心节点
中心节点将按以下顺序加载以下文件
-
系统配置
这些是存储在存储库中的硬编码的Cylc默认值。
(
<python-installation>/cylc/uiserver/jupyter_config.py
) -
站点配置
该文件配置了所有用户的Hub/UIS。默认路径可以通过环境变量
CYLC_SITE_CONF_PATH
进行更改。(
/etc/cylc/uiserver/jupyter_config.py
) -
用户配置
此文件
(
~/.cylc/uiserver/jupyter_config.py
)
或者可以在命令行中提供一个单个的配置文件。
cylc hub --config
警告 如果在命令行中指定配置文件,将不会加载包含硬编码的Cylc默认值的系统配置。
注意 也可以使用
jupyterhub
命令运行hub,但是您必须在命令行上手动源配置文件。
有关配置选项的详细信息,请参阅JupyterHub文档。
UI服务器
请参阅Cylc文档中关于所有Cylc特定配置选项的详细信息。
Cylc UI服务器是Jupyter Server的扩展。Jupyter Server可以运行多个扩展。要控制要运行的扩展,请使用ServerApp.jpserver_extensions
配置,请参阅Jupyter Server配置文档。
默认情况下,UI服务器日志的Cylc部分写入到~/.cylc/uiserver/uiserver.log
。
UI
可以通过仪表板的“设置”选项配置UI。
目前,这些配置存储在Web浏览器中,因此不会在网络中传输,可能不会持久。
开发
欢迎贡献
-
从源安装到Python环境中
pip install -e .[all]
注意 如果您想使用Cylc Flow的开发副本运行,您必须先安装它,否则
pip
将从PyPi下载最新版本。 -
对于UI开发,请遵循cylc-ui项目的开发者说明,然后设置以下配置,以便Cylc使用您的UI构建(而不是默认捆绑的UI构建)
# ~/.cylc/uiserver/jupyter_config.py import os c.CylcUIServer.ui_build_dir = os.path.expanduser('~/cylc-ui/dist')
关于测试的说明:与cylc-flow不同,cylc-uiserver使用pytest-tornasync插件而不是pytest-asyncio。这意味着您不应该用@pytest.mark.asyncio
装饰异步测试函数。
版权和用法条款
版权(C)2019-2024 NIWA & 英国王冠(气象办公室)& 贡献者。
Cylc是免费软件:您可以根据自由软件基金会的GNU通用公共许可证的条款重新分发和/或修改它,许可证版本为3,或(根据您的选择)任何更高版本。
Cylc的发布旨在供公众使用,但没有任何保证;甚至没有关于其适销性或适用于特定目的的暗示性保证。有关详细信息,请参阅GNU通用公共许可证。
您应该已收到Cylc的GNU通用公共许可证副本。如果没有,请参阅GNU许可证。