Почему номер отслеживания, получаемый из ресурса API, отличается от номера отслеживания, записанного в базе данных? - PullRequest
0 голосов
/ 11 сентября 2018

Я использовал resource_show в Документация CKAN 2.7.3 API для получения метаданных из определенных ресурсов. В моей таблице tracking_summary есть ресурс, у которого номер отслеживания больше 0. Однако когда я использую resource_show с {'include_tracking': True}, он показывает, что recent и total равны 0.

Моя запись ресурса в таблице tracking_summary выглядит следующим образом:

                                                       url                                                       | running_total | recent_views 
-----------------------------------------------------------------------------------------------------------------+---------------+--------------
/dataset/d5cd38f4-03df-450e-9eb8-4967bc9741da/resource/844625fb-80a9-445c-85e7-5be8f10ec57b/download/test.csv    |             1 |            1

Я подтвердил, что уже выполнил команду paster tracking update и paster search-index rebuild. Я не знаю, что мне сейчас не хватает.

1 Ответ

0 голосов
/ 12 сентября 2018

Я выяснил причину.Если мы посмотрим на таблицу url, которую мы сохранили в tracking_summary, она не содержит схему http и домен: http://example.ckan.com.Однако если мы запрашиваем ресурс из таблицы resource, url будет содержать полный URL-адрес http.Кроме того, когда вы пытались вызвать resource_show API с {'include_tracking': True} в своем приложении, модель get_for_resource(cls, url) в Tracking будет ссылаться на полный url вместо частичного.Так что, если мы сохраним частичное, get_for_resource потерпит неудачу в строке data = obj.filter_by(url=url).order_by(text('tracking_date desc')).first().Поэтому, когда мы сохраняем URL ресурса в tracking_summary, мы должны хранить полный, такой как: http://example.ckan.com/dataset/<package_id>/resource/<resource_id>/<file_name>.

...