我们一直在使用ckanext-dcat从远程json源收集,有时一些收获工作没有完成,必须与该源的所有数据集一起删除,这不是很方便但是然后一切都恢复正常,我不知道是否有办法删除一份工作。
但现在我在收集消费者日志时得到了这个:
Traceback (most recent call last):
File "/usr/lib/ckan/default/bin/paster", line 9, in <module>
load_entry_point('PasteScript==1.7.5', 'console_scripts', 'paster')()
File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/script/command.py", line 104, in run
invoke(command, command_name, options, args[1:])
File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/script/command.py", line 143, in invoke
exit_code = runner.run(args)
File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/script/command.py", line 238, in run
result = self.command()
File "/usr/lib/ckan/default/src/ckanext-harvest/ckanext/harvest/commands/harvester.py", line 129, in command
gather_callback(consumer, method, header, body)
File "/usr/lib/ckan/default/src/ckanext-harvest/ckanext/harvest/queue.py", line 219, in gather_callback
harvest_object_ids = harvester.gather_stage(job)
File "/usr/lib/ckan/default/src/ckanext-dcat/ckanext/dcat/harvesters.py", line 186, in gather_stage
content = self._get_content(url, harvest_job, page)
File "/usr/lib/ckan/default/src/ckanext-dcat/ckanext/dcat/harvesters.py", line 66, in _get_content
cl = r.headers['content-length']
File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/requests/structures.py", line 54, in __getitem__
return self._store[key.lower()][1]
KeyError: 'content-length
作业完成但没有创建数据集,如果我删除作业并重新收获它继续运行但永远不会结束,其他收获工作也不会更新。
我该如何解决这个问题?
答案 0 :(得分:1)
@Urkonn,这里发生了不同的事情:
收割机卡住:这可能是由收割机上的错误实施引起的,由您正在收获的文件中的特定格式或字段触发。在不知道更多的情况下调试很难,你能告诉我一个导致收割机挂起的文件的链接,或者当发生这种情况时日志会说什么?
清除源而不删除数据集:我完全理解删除所有数据集似乎有点过分,但如果我们从源清除作业,对象等,那么现有数据集将丢失到源的链接,例如,这意味着它们未在源页面上列出。此外,新的工作还没有办法知道数据集已经被收集到这个来源,所以即使数据集已经存在,它也会创建一个副本。也许有办法防止这种情况,但我要说重建数据集更安全。
KeyError: 'content-length'
:这是由升级到请求2.3引起的。我已经修复了ckanext-dcat来防止这种情况[1],所以请拉出最新版本来获取补丁并重新启动所有收获过程。
[1] https://github.com/ckan/ckanext-dcat/commit/ed186623d83cf3baf9dd29bdb13be7f1431b8ab8