0

私たちは ckanext-dcat を使用してリモート json ソースからハーベストを行ってきましたが、一部のハーベスト ジョブが終了せず、そのソースからのすべてのデータセットと共に削除する必要がありました。ジョブを 1 つだけ削除する方法があるかどうかはわかりません。

しかし今、私は収集消費者ログでこれを取得します:

    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

ジョブは終了しますが、データセットは作成されません。ジョブを削除して再収集すると、実行は継続されますが終了せず、他の収集ジョブも更新されません。

どうすればこれを修正できますか?

4

1 に答える 1

1

@Urkonn、ここでさまざまなことが起こっています:

  • ハーベスターがスタックする: これは、ハーベスターのバグのある実装が原因である可能性があり、ハーベスターしているファイルの特定の形式またはフィールドによって引き起こされます。詳細を知らずにデバッグするのは難しいです。ハーベスタがハングする原因となるファイルの 1 つへのリンク、またはこれが発生した場合のログの内容を教えてください。

  • データセットを削除せずにソースをクリアする: すべてのデータセットを削除するのはやり過ぎのように思えることは完全に理解していますが、ソースからジョブやオブジェクトなどをクリアすると、既存のデータセットはソースへのリンクを失います。ソースページには記載されていません。また、新しいジョブには、このソースのデータセットが既に収集されていることを知る方法がないため、データセットが既に存在する場合でも複製が作成されます。これを防ぐ方法があるかもしれませんが、データセットを再作成する方が安全だと思います。

  • KeyError: 'content-length': これは requests 2.3 にアップグレードしたことが原因です。これを防ぐために ckanext-dcat に修正をプッシュしました [1]。そのため、最新バージョンをプルしてパッチを取得し、すべてのハーベスト プロセスを再起動してください。

[1] https://github.com/ckan/ckanext-dcat/commit/ed186623d83cf3baf9dd29bdb13be7f1431b8ab8

于 2014-10-06T10:22:09.910 に答える