随机错误导致 Autosys 作业失败

问题描述 投票:0回答:1

我每天运行一个 autosys,它基本上从 ftp 服务器获取数据,然后对其进行处理并将其保存到共享驱动器和数据库中。该过程使用了解压方法

curl_download(url=ftp_url,destfile=zip_filename, mode="wb",handle=h)
file_list <- unzip(zip_filename,list=T)$Name
unzip(zip_filename,files=file_list,exdir=dir)
unlink(zip_filename)

其中

ftp_url
是 ftp 站点,
zip_filename
是共享驱动器文件。

我在这个过程中收到随机错误,大多数时候是在解压缩部分,其中一些是“权限被拒绝”,“文件不存在”(因为解压缩成功但文件未在该位置提取)。

这些错误每天都会随机出现,出现几天后就不再出现。

有谁知道这些错误背后的原因

我尝试在失败时重新运行代码,但这不起作用

r unzip autosys
1个回答
0
投票

我不知道这是否有效,但我认为“共享驱动器”提供了出现问题的可能性。 (这可以是真实的网络驱动器,也可以是虚拟的网络驱动器,例如 dropbox、onedrive、nextcloud、owncloud 等)

尝试对下载和解压缩部分使用完全本地路径,然后完成后将生成的文件复制到共享驱动器。 (我假设

tempdir()
(在其下放置
tempfile
创建的文件)位于本地驱动器上,而不是共享驱动器上。)

tf <- tempfile(fileext = ".zip") # used for the download
td <- tempfile()                 # used for extraction
dir.create(td)

curl_download(url = ftp_url, destfile = tf, mode = "wb", handle = h)
file_list <- unzip(tf, list = TRUE)$Name
unzip(tf, files = file_list, exdir = td)
# assuming `dir` is a target directory
file.copy(file.path(td, file_list), dir)

# cleanup
unlink(tf)
unlink(td, recursive = TRUE)

如果您的 zip 文件包含子目录,您可能需要使用

file.copy(list.files(td, full.names = TRUE), dir, recursive = TRUE)

其中对

list.files
的新调用仅返回
td
中顶层的文件和目录,并且
recursive=TRUE
确保子目录中的文件也被复制。

© www.soinside.com 2019 - 2024. All rights reserved.