Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python s3multiput(boto)从EC2实例上传到s3的静默故障_Python_Crontab_Boto - Fatal编程技术网

Python s3multiput(boto)从EC2实例上传到s3的静默故障

Python s3multiput(boto)从EC2实例上传到s3的静默故障,python,crontab,boto,Python,Crontab,Boto,我正在尝试自动化一个流程,该流程在一个(或多个)AWS实例上收集数据,每小时将数据上传到S3,由一个解耦的流程检索以进行解析和进一步操作。作为第一步,我编写了一些由crontab启动的shell脚本(运行在ubuntu12.04lts中),该脚本调用boto实用程序s3multiput 在大多数情况下,这工作正常,但非常偶尔(可能一周一次)文件无法出现在s3存储桶中,我看不到任何错误或异常抛出来跟踪原因 我使用的是boto 2.6.0附带的s3multiput实用程序。Python 2.7.3是

我正在尝试自动化一个流程,该流程在一个(或多个)AWS实例上收集数据,每小时将数据上传到S3,由一个解耦的流程检索以进行解析和进一步操作。作为第一步,我编写了一些由crontab启动的shell脚本(运行在ubuntu12.04lts中),该脚本调用boto实用程序s3multiput

在大多数情况下,这工作正常,但非常偶尔(可能一周一次)文件无法出现在s3存储桶中,我看不到任何错误或异常抛出来跟踪原因

我使用的是boto 2.6.0附带的s3multiput实用程序。Python 2.7.3是实例上的默认Python。我已将IAM角色分配给实例,以向boto提供AWS凭据

我有一个crontab调用一个脚本,该脚本调用一个包装器,该包装器调用s3multiput。我在s3multiput调用中包含了
-d1
标志,并使用
2>&1
重定向了crontab作业上的所有输出,但是丢失数据的小时报告看起来就像是前一小时和后一小时的报告,每个报告都成功了

所以,99%的情况下,这是可行的,但当它失败时,我不知道为什么,我很难找到方向。我只是在稍后当解析器作业试图从bucket中提取数据时才发现失败,而数据不在bucket中。数据在应该上传的目录中是安全可靠的,所以我可以手动操作,但不必这样做

如果有帮助的话,我很乐意发布30-40行相关代码,但我想知道是否有其他人遇到过这种情况,而且听起来很熟悉

总有一天我会回到管道的这一部分,用python重写它以避免s3multiput,但我们还没有开发时间


如何调查s3multiput上传出现的问题?

首先,我会尝试更新boto;对开发分支的提交会在多部分上载失败时提到日志记录。请注意,这样做需要使用
s3put
,因为
s3multiput
正在被折叠成
s3put

嗯。感谢您的提示-我已经看过github repo,其中一些更新非常有意义,但我们通常会尝试保持生产/稳定版本,2.6.0是PyPI提供的最新版本。我还没有提到登录失败,只是在缺少依赖项导致多部分不可用时进行登录。我会继续找,但你能告诉我去调查吗?非常感谢。希望有帮助。至于稳定的代码,在这样的大型项目中,我不会太担心这一点;我的自由职业者公司最近转向了sleekxmpp的开发版本,以获得更多功能。我认为这些项目的发展分支比我自己的“稳定”版本更稳定。