部署内容GitHub存储库中包含了一个示例Shiny应用程序,并在部署脚本中使用了本节中的食谱,你可以在构建自己的工作流时作为示例使用。
的连接服务器API参考包含这些菜谱中使用的每个端点的文档。
请注意
这些食谱使用bash
代码片段和依赖旋度
来执行HTTP请求。我们使用CONNECT_SERVER
和CONNECT_API_KEY
中引入的环境变量开始这本烹饪书的部分。
例子;内容可以接收多次部署。
创建一个包捕获代码及其依赖项。
上传bundle存档RSt英格兰vs伊朗让球udio连接。
可选地,设置环境变量内容在运行时需要的。
部署(激活)那个bundle并监控其进展。
轮询任务的更新;获取已派遣行动的最新信息。
您可以选择在每次部署时创建一个新的内容项,或者重复瞄准相同的内容项。在继续开发该应用程序或报告时重用现有内容项是一种很好的实践。为新的工件创建新的内容项。
重要的
在更改内容类型时,必须创建一个新的内容项。例如,不能将包含R Markdown文档的包部署到已经运行Dash应用程序的内容项上。
创建内容API是用于在RStudio Connect中创建新内容项的端点。英格兰vs伊朗让球它接受一个JSON文档作为输入。Connect Server API Reference描述了可能提供给这个端点的全部字段。
我们的例子只会提供两个字段:的名字
和标题
:
的名字
:该字段是必需的,并且必须在您的帐户内的所有内容中是唯一的。这是一个描述性的,url友好的标识符。
标题
:该字段是可选的,是定义用户友好标识符的地方。当设置时,标题
显示在RStudio Conne英格兰vs伊朗让球ct仪表板上,而不是的名字
。
举个例子:
出口数据=` {"name": "shakespeare", "title": "shakespeare Word Clouds"}'curl—silent—show-error—l—max-redirs0- - -失败- x的帖子\- h“授权:关键$ {CONNECT_API_KEY}”\——数据”$ {数据}”\”$ {CONNECT_SERVER}__api__ / v1 /内容”# = > {# => "guid": "ccbd1a41-90a0-4b7b-89c7-16dd9ad47eb5",# =>“name”:“shakespeare”,# => "title": "Shakespeare Word Clouds",# = >…# => "owner_guid": "0b609163-aad5-4bfd-a723-444e446344e3",# = >}
额外的内容字段:
让我们定义一个CONTENT_GUID
环境变量,包含GUID
我们刚刚创建的内容。我们将在剩下的部署示例中使用这个变量:
出口CONTENT_GUID=“ccbd1a41 - 90 - a0 - 4 - b7b - 89 - c7 - 16 - dd9ad47eb5”
创建一个包
来自R控制台:
这个目录应该是你当前的工作目录。rsconnect::writeManifest()
请注意
请使用rsconnect
版本0.8.15或更高,当生成清单文件。
对于基于python的内容,你可以使用rsconnect-python
包来创建manifest.json
。确保你的项目使用的Python环境是激活的,然后创建一个特定于你的项目类型的清单(笔记本
,api
,破折号
,散景
,或streamlit
):
rsconnect write-manifest$ {类型}。/
看到rsconnect-python文档获取详细信息。
我们建议提交manifest.json
到您的源代码控制系统中,并在您推送代码的新版本时重新生成它——特别是在更新包或以其他方式更改其依赖关系时!指的是用户指南有关创建清单的更多信息。
请注意
如果你的RStu英格兰vs伊朗让球dio Connect安装使用了Kubernetes的脱机内容执行(这个功能目前还在beta中),你可以选择指定你想要Connect在构建你的内容时使用哪个图像:
#从一个R控制台(这个目录应该是你当前的工作目录):rsconnect::writeManifest(图像=“ghcr.io 英格兰vs伊朗让球/ rstudio /内容:r4.0.5-py3.8.8-bionic”)
#使用' rsconnect-python '包:rsconnect write-manifest$ {类型}——图片“ghcr.io 英格兰vs伊朗让球/ rstudio /内容:r4.0.5-py3.8.8-bionic”。/
您只能使用管理员已配置的映像。您可以通过登录RStudio Connect并单击英格兰vs伊朗让球文档
按钮在页面顶部。参见《用户指南》页面出版从R和从命令行发布为更多的细节。
创建您的包gz
收集了要包含的文件集后进行归档。这里有一个归档一个简单的Shiny应用程序的例子;的app.R
包含R源和数据
是应用程序加载的数据文件目录:
Tar CZF bundle.tar.gz清单。json app.R数据
上传包端点来上传内容包bundle.tar.gz
文件作为其有效载荷:
curl—silent—show-error—l—max-redirs0- - -失败- x的帖子\- h“授权:关键$ {CONNECT_API_KEY}”\——data-binary @“bundle.tar.gz”\”$ {CONNECT_SERVER}__api__ / v1 /内容/$ {CONTENT_GUID}/包”# = >{“bundle_id”:“485”,“bundle_size”:162987}
来自上传端点的响应包含创建的bundle的标识符和接收到的字节数。
重要的
你必须使用——data-binary
参数旋度
,它发送数据文件而不进行额外处理。做不使用——数据
论点:当你“提交”一个表单时,它以与浏览器相同的方式提交数据,这是不合适的。
从上传响应中提取bundle ID,并将其分配给aBUNDLE_ID
环境变量:
设置环境变量
部署包端点:
注意:这个例子保存了从Connect服务器返回的cookie,所以它可以被传递到下面的任务轮询端点。在Connect的单节点配置中,可以省略cookie。
#构建命名要部署的bundle的JSON输入。出口数据=“{”bundle_id”:“””$ {BUNDLE_ID}”“}”#触发部署。curl—silent—show-error—l—max-redirs0- - -失败- x的帖子\- h“授权:关键$ {CONNECT_API_KEY}”\——数据”$ {数据}”\- c cookie.txt\”$ {CONNECT_SERVER}__api__ / v1 /内容/$ {CONTENT_GUID}/部署”# = >{“task_id”:“BkkakQAXicqIGxC1”}
部署请求的结果包含一个任务标识符,我们用它来轮询该部署任务的进度:
轮询任务Endpoint检索关于已分派操作的最新信息。
注意:在Connect的高可用性集群部署中,任务请求必须由执行任务的节点提供服务。这是通过确保从部署操作返回的cookie包含在后续的请求中来实现的,以便负载均衡器能够适当地指导请求。在单节点配置中,可以省略cookie。
有两种方式来轮询任务信息:
- 你可以请求完整的任务输出或
- 你可以请求增量任务输出
的第一个
URL查询参数控制返回多少数据。
下面是一个典型的初始任务进度请求。它没有指定第一个
URL查询参数,意味着返回所有可用的输出。当第一个
是不是给出了,价值第一次= 0
假定。
curl—silent—show-error—l—max-redirs0——失败\- h“授权:关键$ {CONNECT_API_KEY}”\- b cookie.txt\”$ {CONNECT_SERVER}__api__ / v1 /任务/$ {任务}?等待= 1”# = > {# => "id": "BkkakQAXicqIGxC1",# => "output": [# =>“Building Shiny application…”,# => "Bundle requested R version 3.5.1;使用……”# = >),# => "finished": false,# => "code": 0,# => "error": "",# =>“last”:2 .# = >}
的等待= 1
参数告诉服务器收集最多1秒的输出。这种长轮询方法是在轮询循环中显式休眠的一种替代方法。
的最后的
字段可以让我们增量地获取任务输出。我们的初始请求返回两个输出行;我们希望下一个请求从该点开始继续。
这里是一个任务进度的请求,它不包括前两行输出:
出口第一个=2curl—silent—show-error—l—max-redirs0——失败\- h“授权:关键$ {CONNECT_API_KEY}”\”$ {CONNECT_SERVER}__api__ / v1 /任务/$ {任务}?等待= 1和=$ {第一个}”# = > {# => "id": "BkkakQAXicqIGxC1",# => "output": [# => "删除先前的清单。Json to packrat transform .",# =>“执行清单。Json to packrat transform .",# = >),# => "finished": false,# => "code": 0,# => "error": "",# => "last": 4# = >}
继续增量地获取任务进度,直到响应被标记为完成。输出的最后一行包含在这个响应中。
出口第一个=86curl—silent—show-error—l—max-redirs0——失败\- h“授权:关键$ {CONNECT_API_KEY}”\”$ {CONNECT_SERVER}__api__ / v1 /任务/$ {任务}?等待= 1和=$ {第一个}”# = > {# => "id": "BkkakQAXicqIGxC1",# => "output": [# => "Completed packrat build against R version: '3.4.4'",# =>“Launching Shiny application…”# = >),# => "finished": true,# => "code": 0,# => "error": "",# => "last": 88# = >}
错误在响应中用非零表示代码
和一个错误
消息。很可能输出
流还包括信息,将帮助您理解错误的原因。例如,安装R包的问题会出现在输出
。
访问部署内容