[英]Why tracking number get from resource API is different from the tracking number recorded in database?
我在CKAN 2.7.3 API 文档中使用了resource_show
从特定资源中获取元数据。 在我的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
。 我不知道我现在错过了什么。
我找出了原因。 如果我们查看我们存储在tracking_summary
表中的url
,它不包含 http 架构和域: http://example.ckan.com
。 但是,如果我们从resource
表中查询资源,则url
将包含完整的 http url。 此外,当您尝试在应用程序中使用{'include_tracking': True}
调用resource_show
API 时, Tracking
模型中的get_for_resource(cls, url)
将引用完整url
而不是部分url
。 因此,如果我们存储部分的, get_for_resource
将在data = obj.filter_by(url=url).order_by(text('tracking_date desc')).first()
行失败。 因此,当我们在tracking_summary
保存资源 url 时,我们应该存储完整的,例如: http://example.ckan.com/dataset/<package_id>/resource/<resource_id>/<file_name>
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.