Status and limitations of Community Cloud
Community Cloud Status
您可以在streamlitstatus.com查看社区云的当前状态。
GitHub OAuth scope
要部署您的应用程序,Streamlit需要访问您在GitHub上的应用程序源代码,并能够管理与您的仓库关联的公钥。默认的GitHub OAuth范围足以处理公共GitHub仓库中的应用程序。然而,为了访问您的私有仓库,我们会创建一个只读的GitHub部署密钥,然后使用SSH密钥访问您的仓库。当我们创建此密钥时,GitHub会通知仓库管理员作为一项安全措施。
Streamlit 需要 GitHub 的额外 repo OAuth 范围来与您的私有仓库一起工作并管理部署密钥。我们认识到 repo 范围赋予了 Streamlit 我们实际上并不需要的额外权限,作为重视安全的人,我们甚至不希望被授予这些权限。这是在创建 Community Cloud 时 GitHub 提供的权限模型。然而,我们正在努力采用新的 GitHub 权限模型,以减少不必要的权限。
Developer permissions
由于上述OAuth的限制,开发者必须拥有对仓库的管理权限才能从中部署应用程序。
Repository file structure
您可以从您的仓库部署多个应用程序,并且您的入口文件可能位于目录结构中的任何位置。然而,社区云会从您的仓库的根目录初始化所有应用程序,即使入口文件位于子目录中。这会产生以下后果:
- Community Cloud 只识别仓库根目录(每个分支)下的一个
.streamlit/configuration.toml文件。 - 您必须声明图像、视频和音频文件的路径,以便Streamlit命令相对于您的仓库根目录。例如,
st.image、st.logo和st.set_page_config中的page_icon参数期望文件位置相对于您的工作目录(即您执行streamlit run的地方)。
Linux environments
社区云基于Debian Linux构建。
- 社区云使用 Debian 11("bullseye")。要浏览可以安装的可用软件包,请参阅软件包列表。
- 所有文件路径必须使用正斜杠路径分隔符。
Python environments
- 你不能为单个应用程序混合使用Python包管理器。Community Cloud根据它找到的第一个环境配置文件来配置你的应用程序的Python环境。有关更多信息,请参阅其他Python包管理器。
- 我们建议您使用最新版本的Streamlit,以确保完整的社区云功能。在规划您的环境时,请务必注意Streamlit的当前要求以确保包兼容性,特别是
protobuf>=3.20,<6。 - 如果你固定使用
streamlit< 1.20.0,你也必须固定使用altair<5。早期版本的 Streamlit 没有正确限制 Altair 的版本。在 Community Cloud 上运行的解决方法脚本如果检测到较新的版本,将强制安装altair<5。这可能会无意中升级 Altair 的依赖项,违反你的环境配置。较新版本的 Streamlit 支持 Altair 版本 5。 - 社区云仅支持仍在接收安全更新的已发布版本的Python。您不能使用已停止支持、预发布或功能版本的Python。有关更多信息,请参阅Python版本状态。
Configuration
以下配置选项在社区云中设置,并将覆盖您的config.toml文件中的任何相反设置:
[client]
showErrorDetails = false
[runner]
fastReruns = true
[server]
runOnSave = true
enableXsrfProtection = true
[browser]
gatherUsageStats = true
IP addresses
如果您需要为连接设置IP地址白名单,Community Cloud目前从以下IP地址提供服务:
警告
这些IP地址可能会随时更改,恕不另行通知。
35.230.127.150
35.203.151.101
34.19.100.134
34.83.176.217
35.230.58.211
35.203.187.165
35.185.209.55
34.127.88.74
34.127.0.121
35.230.78.192
35.247.110.67
35.197.92.111
34.168.247.159
35.230.56.30
34.127.33.101
35.227.190.87
35.199.156.97
34.82.135.155
Other limitations
- 当您将某些内容打印到云日志时,您可能需要在显示之前执行
sys.stdout.flush()。 - 社区云托管所有应用程序在美国。目前这是不可配置的。
- 社区云限制了从GitHub更新应用的频率,每分钟不超过五次。
还有问题吗?
我们的 论坛 充满了有用的信息和Streamlit专家。