我有自己的模板标签:
@register.inclusion_tag('path_to_module.html', takes_context=True)
def getmodule(context, token):
try:
return slow_function(params)
except Exception, e:
return None
这很慢。等待这个标签的模板。
我可以异步打电话给他们吗?
答案 0 :(得分:2)
如果它是可缓存的(每页视图不需要唯一);然后缓存它。在模板标签中使用Django's cache API,或在模板中直接使用template fragment caching。正如@jpic所说,如果需要一段时间重新计算 - 将其传递给像Celery这样的任务队列。
如果您因任何原因需要此功能来运行每个页面视图;然后将其分成新视图,并使用JavaScript异步加载到主模板中的某个容器中。
答案 1 :(得分:0)
您可以在后台进程中执行python函数:
您可以创建一个后台任务,该任务呈现path_to_module并缓存输出。缓存应该无效时:再次在后台运行slow_function。