为什么从资源API获取跟踪号码与数据库中记录的跟踪号码不同?

问题描述 投票:1回答:1

我在resource_show中使用CKAN 2.7.3 API docs从特定资源中获取元数据。在我的tracking_summary表中,我有一些跟踪数大于0的资源。但是,当我使用resource_show{'include_tracking': True}时,它显示recenttotal都是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 updatepaster search-index rebuild的命令。我不知道我现在缺少什么。

postgresql solr pylons ckan paster
1个回答
1
投票

我发现了原因。如果我们查看存储在url表中的tracking_summary,它不包含http模式和域:http://example.ckan.com。但是,如果我们从resource表查询资源,url将包含完整的http url。此外,当您尝试在应用程序中使用resource_show调用{'include_tracking': True} API时,get_for_resource(cls, url)模型中的Tracking将引用完整的url而不是部分get_for_resource。因此,如果我们存储部分一个,data = obj.filter_by(url=url).order_by(text('tracking_date desc')).first()将在tracking_summary行失败。因此,当我们在http://example.ckan.com/dataset/<package_id>/resource/<resource_id>/<file_name>中保存资源网址时,我们应该存储完整的网址,例如:qazxswpoi。

© www.soinside.com 2019 - 2024. All rights reserved.