Django网站内容由第三方REST API构建

时间:2016-07-26 16:47:49

标签: python django api rest

我目前正在使用Django框架开发我的第一个网站。我的内容的主要部分来自第三方API,这需要对所述API提出三个API请求以获取我需要的所有数据。 我的问题是,这会大大降低性能,这意味着我的页面加载时间大约为1-2秒,我觉得这并不令人满意。

我正在为这些场景寻找一些替代方案/最佳实践。如何加快页面加载时间?到目前为止,我一直在考虑在后台运行一个cronjob,它为当前登录的所有用户调用API,并将数据存储在我的本地数据库中,响应时间要快得多。

另一种选择是单独加载API请求数据并在加载数据后添加数据,但我根本不知道它是如何工作的。

关于如何改进这一点的任何其他想法或任何提示?

谢谢!

托拜厄斯

1 个答案:

答案 0 :(得分:1)

通常的做法是构建缓存,因此首先查看本地数据库中的数据,如果不存在,则调用api并保存数据。 没有更多的信息,就不可能写出一个有效的例子。 您可以使用自定义方法一次完成所有操作。

def call_data(id):
    try:
        data = DataModel.objects.get(api_id=id)
    except Exception, e:
        data = requests.get("http://api-call/")
        DataModel.objects.create(**data)

    return data

这是一个例子,不在生产中使用,至少需要一些成功验证。