所以我不能为我的生活弄清楚如何修复这个错误......
基本上我有一个程序可以从s3存储桶下载所有文件并解析每个文件的内容并将记录添加到数据库中。按顺序执行它太慢了,所以我决定尝试使用多进程模块并行下载和处理文件,因为整个过程不需要任何类型的共享内存或锁定系统。因此,我使我的代码看起来像下面这样:
from multiprocess import Pool
import boto
def doWork(s3key):
# connect to s3 bucket and get s3 file key
conn = boto.connect_s3('aws_key_id', 'aws_secret_access_key')
bucket = conn.get_bucket('my_bucket')
key = bucket.get_key(s3key)
##########ERROR THROWN BY THIS CALL#####################
key.get_contents_to_filename('my_file')
# insert into database here....
if __name__ == '__main__':
pool = Pool()
# for every s3 file in bucket, download/process file in a parallel worker
for s3keyname in s3keyname_list:
pool.apply_async(doWork, s3keyname)
由于某种原因,电话' get_contents_to_filename()'提出SSLError,但有时只是!更奇怪的是,如果我一次下载7个文件,只有1个文件无法正确下载,因为只有一个子进程会抛出错误。因此,有时所有文件都正确下载,而其他文件只有一个文件会引发错误。错误消息说明了使用错误版本的ssl,但是不应该尝试下载其他文件也会引发相同的错误?我试过谷歌搜索,我能找到的最好的可能是它的某种缓冲区溢出问题?任何帮助将不胜感激!