更新全局上下文CKAN

时间:2015-11-19 10:18:34

标签: ckan

我需要在全球CKAN环境中使用一些实时数据。 我使用Jinja2从中渲染一些html。首先我使用了ckan.lib.app_globals

from ckan.lib.app_globals import app_globals as g

g.my_data = retrive_data_from_other_source 

主要问题 - g只更新一次,但我需要保持同步。要立即更新g,我需要重新启动apache,但这不是一个选项。

2 个答案:

答案 0 :(得分:0)

每个CKAN线程都有自己的g副本。因此,如果您在一个线程中更改它,它将不会更新其他线程。

它被描述为'全局',因为它包含所有请求使用的信息,但是一旦ckan完成启动阶段,它基本上是只读的。它非常适合存储配置/设置,但不适合您想要的内容。

要在不同的CKAN请求之间共享实时数据,您需要将它放在CKAN外部,例如redis或memcached等。

答案 1 :(得分:0)

经过努力,我发现了最好的方法。这个想法是用的 模板助手:http://docs.ckan.org/en/latest/theming/templates.html#custom-template-helper-functions