r - 无法将大型 ish .RDS 文件部署到 RStudio 中的 shinyapp.io
问题描述
我正在尝试从 RStudio 部署一个闪亮的应用程序。除了“ui.r”和“server.r”文件,我还有 3 个 .RDS 文件(50kb、15mb 和 18mb),我在 server.r 文件中读取它们,它们在本地工作正常。当我开始上传时,它无法给出以下错误:
Preparing to deploy application...DONE
Uploading bundle for application: 794264...
Error in force(code) : Could not upload file.
Calls: <Anonymous> -> withStatus -> force
Execution halted
我尝试选择 50kb 和 15mb 的文件,这很有效。当我单独选择 18 mb 时,它可以工作,但是当我选择所有三个时,它似乎不起作用。我将文件大小增加到大约。500 mb(这很可能会缩小捆绑包的大小),使用以下内容:
options(rsconnect.max.bundle.files = 500000000)
当我阅读它时,它以字节为单位。
那是徒劳的。
我使用控制台部署:
deployApp(appDir="Documents/GitHub/DataScience_JH_Coursera_Assignments/10.Capstone/shinyapp/PredictionText/",logLevel="verbose",lint=TRUE)
无济于事,但我设法将有问题的行归零,并得到以下日志:
----- Deployment error -----
Error in force(code) : Could not upload file.
----- Error stack trace -----
4: stop("Could not upload file.")
3: force(code)
2: withStatus(paste0("Uploading bundle for ", assetTypeName, ": ",
application$id), {
bundlePath <- bundleApp(target$appName, appDir, appFiles,
appPrimaryDoc, assetTypeName, contentCategory, verbose)
if (isShinyapps(accountDetails)) {
bundleSize <- file.info(bundlePath)$size
checkSum <- md5sum(bundlePath)
bundle <- client$createBundle(application$id, "application/x-tar",
bundleSize, checkSum)
if (verbose)
timestampedLog("Starting upload now")
if (!uploadBundle(bundle, bundleSize, bundlePath)) {
stop("Could not upload file.")
}
if (verbose)
timestampedLog("Upload complete")
response <- client$updateBundleStatus(bundle$id, status = "ready")
bundle <- client$getBundle(bundle$id)
}
else {
bundle <- client$uploadApplication(application$id, bundlePath)
}
})
1: deployApp(appDir = "Documents/GitHub/DataScience_JH_Coursera_Assignments/10.Capstone/shinyapp/PredictionText/",
logLevel = "verbose", lint = TRUE)
所以这里失败了,我假设:
if (!uploadBundle(bundle, bundleSize, bundlePath)) {
仅供参考,如果我在得到以下信息时正确进行了转换,我的捆绑包大小设置为大约 3gb:
getOption("rsconnect.max.bundle.size")
[1] 3145728000
我已经坚持了5天了。我阅读了所有我能阅读的论坛,尝试单独上传文件,却发现 shiny/rsconnect 似乎在此之前删除了实例,因此无法逐个上传文件。我什至尝试弄乱 .dcf rsconnect 文件,但也没有。任何帮助/见解将不胜感激。
解决方案
我已经设法解决了这个问题,因为事实证明我的 *.RDS 文件与 server.r 和 ui.r 文件位于同一文件夹中。我只需要在与 *.r 文件相同的文件夹中创建一个名为“data”的文件夹,然后将 *.RDS 文件转储到那里并上传工作。
日志本来可以更清楚一点。
此外,不相关,但它确实有助于“刷新缓存”,导航到 rsconnect 和所有后续文件夹,直到到达 [appname].dcf 文件并删除该文件。
推荐阅读
- flutter - 当在颤动中点击网格时如何导航到新页面?
- saml-2.0 - 在 OpenAM SAML2 中使用未指定的 NameId 格式时出现“没有本地用户被映射错误”
- excel - Excel 等式将小时数添加到具有日期时间数据的现有单元格
- r - R为数据框保存新列名
- javascript - 如何在 Javascript 中将 XML 发布到 URL
- sql - 从另一个表postgresql的另一行中删除基于id的行
- coffeescript - 类变量未定义...尽管已定义
- android - 如何在 Android 上保存 BluetoothGatt 实例?
- python - 我的算法的时间复杂度是多少?
- typescript - 带有重载方法的 TypeScript 接口的部分实现