2017-02-15 32 views
0

當使用API​​將CKAN資源更新爲CKAN時,有沒有辦法獲得錯誤或調試?使用CKAN API無法正確更新文件

創建後,它使用的下一個環節: Update resource in CKAN using python

一切都很正常,除了沒有正確更新文件。 描述,名稱等。效果很好,數據集的時間正確更新,但不是文件。

這是我使用針對demo.ckan.org代碼:

resource_dict_excel = {'id': '07153b0a-f330-4235-b28a-21bdfe8ff9ca', 
        'url':'http://myserver/ckan_api/public_html/test-excel.xls', 
        'format':'XLS', 
        'description':'Descripción excel'} 

    requests.post('http://demo.ckan.org/api/3/action/resource_update', 
       json=resource_dict_excel, 
       headers={"Authorization": "b2367ca2-567c-46b4-b714-67632ef906d5"}) 
    print resource_dict_excel 

UPDATE

url="http://myserver/ckan_api/public_html/producction.xls" 
f = urllib2.urlopen(url) 
data = f.read() 



requests.post('http://myckanserver/api/3/action/resource_update', 
       data={"package_id":"90bc25e0-be1d-49a4-8e3a-c43d945bb9c1"}, 
       headers={"X-CKAN-API-Key": "2b367c89-924d-4086-8d76-1e6672bb0c23"}, 
       files=[('upload', data)]) 

作品正確的!

謝謝

+0

我試着回答下面的內容,但是如何準確地創建資源(也是在Python中)以及文件是否已經上傳並且能夠下載或者您是否指定了URL 。 –

回答

0

您可以檢查命令「paster serve」上的所有輸出日誌。 根據您使用的安裝過程,日誌將在「/ var/log/ckan」或「/ var/log/apache2」中提供。

+0

嗨。在/ var/log/apache2,/ var/log/jetty,/ var/log/nginx和/ var/log/ckan不存在時不生成任何內容...謝謝 – davisoski

+0

你遵循什麼類型的安裝?你能發給我嗎?嘗試通過端口5000運行CKAN服務器。嘗試使用以下命令啓動服務器:su -s/bin/bash - ckan -c「。/ usr/lib/ckan/default/bin/activate && paster serve --reload/etc /ckan/default/development.ini」 –

2

我覺得有許多東西怎麼回事:

  • 你不能只更新其認爲這是一個文件CKAN資源的URL。由the api call返回的鏈接是一個ckan內部鏈接,它返回爲資源上載的文件。我想知道它爲什麼不返回任何東西(文件未找到) - 你說這個文件保持不變,或者你只是指網址?
  • 您無法通過指定URL來導入文件。在一些CKAN(Datapusher)上有一個機制,它將獲取一個URL並將內容(表格數據,如XLS)存儲在數據庫中,但這是不同的。要使用Python將文件上傳到CKAN,您需要將其指定爲文件數據而不是URL。有一個示例here - 它可能也適用於resource_update。