我知道这里有一个关于这个的问题(如何避免在Scrapy中将媒体重新下载到S3?(但我还没有答案
我设计了一个带有FilesPipeline的蜘蛛,可以从几个网站获取pdf文件。
我知道FilesPipeline
类使用GCSFilesStore
和函数media_to_download
来比较bloblast_modified
属性日期与当前时间的过期持续时间(以天为单位((EXPIRES
最初等于90(重点是,我希望能够不时地启动我的蜘蛛,并且只下载新的文档
然而,当我第二次运行我的spider时,它会再次重新下载所有文件
我试着增加EXPIRES
参数,但似乎没有减少。
感谢您的帮助!
更新:
我认为这是一个来自scratch的bug。我在github上提交了一份错误报告,解释了如何复制这个
这似乎是由于bucket的一些权限配置造成的。以下是github用户@michalp123的答案:
区块报价我无法复制这个bug@lblanche,你确定你正确设置了bucket的权限吗?我第一次尝试复制它时,我得到了一个设置,其中我使用的服务帐户具有写入权限,但由于某种原因,在bucket上调用get_blob引发了403,这导致GCSFilesStore中的stat_file方法失败,并导致每次都下载该文件。在修复权限后,一切都正常工作。如果是这种情况,我认为最好检查GCSFilesStore的init中的权限,如果无法从bucket中获取文件的元数据,则显示警告。
同一用户合并了一个修复程序,如果不允许访问元数据,该修复程序会在GCSFilesStore
init处添加警告。