我可以通过以下方式部署我闪亮的应用程序:
rsconnect::deployApp(appName = 'Test', launch.browser = FALSE, forceUpdate = T)
然而,它并不总是成功地部署应用程序。我计划以预定任务的形式在脚本中运行这个任务,并希望确保deployApp成功完成(如果进程没有成功,请再试一次)。
我想您可以将其放在while循环中,但我不知道如何包含能够识别函数执行成功或失败的脚本。有人有主意吗?
错误信息:
Preparing to deploy application...DONE
Error: $ operator is invalid for atomic vectors发布于 2020-06-23 17:36:20
正如我在上面的评论中所说,我真的不认为这是一个好主意。安全可靠地做这件事需要做大量的工作。在我看来,你上面引用的错误信息看起来相当“不受控制”,所以我怀疑这更多是因为你的应用程序中的一个问题,而不是发布过程中的一个临时问题。在这种情况下,除非采取措施防止,否则将处于无限循环中。您是否研究过发布记录和远程部署日志告诉您的内容?
尽管如此,如果我必须这样做的话,这就是我的方法。
例如,在全局环境中创建一个标志(例如,FALSE.
FALSE.
onDeploymentFailure() say,它将deploymentFlag设置为在while循环中调用deployApp的deploymentFlag,如while(!deploymentFlag) {
deploymentFlag <- TRUE
rsconnect::deployApp(
...,
on.failure=onDeploymentFailure,
logLevel="verbose",
recordDir=<some dir>
)
if (!deploymentFlag) {
...interrogate the publish record to try to determine what went wrong,
and correct it if possible...
}
}为了安全,尤其是在开发和测试过程中,我会确保每次尝试都编写不同的发布日志,并将尝试的最大次数限制在非常小的数目上:首先是1次,然后是解决了最初问题之后的2次或3次,依此类推。
https://stackoverflow.com/questions/62539981
复制相似问题