2017-02-15 7 views
0

Есть ли способ получить ошибки или отладить при обновлении моих ресурсов до CKAN с помощью API. ??Файл не обновлен корректно с использованием 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

Вы можете проверить весь журнал вывода в команде «Пастер служить». В зависимости от того, какой процесс установки вы использовали, журнал будет доступен в папке «/ var/log/ckan» или «/ var/log/apache2».

+0

Привет. Ничего не генерируется в/var/log/apache2,/var/log/jetty,/var/log/nginx и/var/log/ckan не существует ... спасибо – davisoski

+0

Какую установку вы придерживаетесь? Вы можете отправить мне? Попробуйте запустить сервер CKAN через порт 5000. Попробуйте эту команду для запуска сервера: su -s/bin/bash - ckan -c "./Usr/lib/ckan/default/bin/activate && paster serve --reload/etc /ckan/default/development.ini» –

2

Я думаю, что есть несколько вещей происходит здесь:

  • Вы не можете просто обновить URL в виде CKAN ресурса, который думает, что это файл. Ссылка, возвращаемая the api call, является внутренней ссылкой ckan, которая возвращает файл, загруженный для ресурса. Я действительно удивляюсь, почему это ничего не возвращает (файл не найден) - вы сказали, что файл остается тем же, или вы просто имеете в виду URL-адрес?
  • Вы не можете импортировать файл, указав URL-адрес. На некоторых CKAN (Datapusher) есть механизм, который будет извлекать URL-адрес и хранить содержимое (табличные данные, например XLS) в базе данных, но это отличается. Чтобы загрузить файл в CKAN на Python, вам нужно указать его как данные файла, а не URL. Существует пример here - он может работать и для resource_update.