【问题标题】:Django/Python Serializing valuequeryset with number of objects limits per call (external service)Django / Python序列化valuequeryset,每次调用的对象数限制(外部服务)
【发布时间】:2017-10-02 04:04:30
【问题描述】:

我对 Django 和 Python 比较陌生,并且有一个关于将对象限制的序列化分解为调用限制的最佳方法的快速问题。除了调用/时间范围之外,我将调用外部 Web 服务,该服务限制每次调用的对象数量。

目前我正在从 valuequeryset 创建一个字典,然后进行序列化。我的 json 生成正确,但我正在寻找分块构建 json 的最佳方法。我正在使用的 API 允许调用单个对象,但也可以调用最多 5 个对象。

例如,我有一个包含 25 条记录的查询集,什么是迭代列表并将其分解为 5 个 json 有效负载的最佳方法,然后我可以对其进行迭代、构建 json 并启动。使用每次通话 5 个而不是每次通话 1 个将有助于每个时间范围内的通话。

任何帮助将不胜感激,并提前致谢。

【问题讨论】:

    标签: python json django serialization iteration


    【解决方案1】:

    实现这一点的最简单方法可能是利用现有框架,如 django-rest-framework。速率限制可以作为 settings.py 的一部分来实现 - http://www.django-rest-framework.org/api-guide/throttling/

    【讨论】:

    • 我走上了 DRF 的道路。据我了解,它是一种用于创建和公开 API 的工具。我还在运行时基于映射和模型数据动态地构建调用,而重写所有类以动态调用外部服务确实比必要的工作更多。不过,我很感谢您的快速响应。
    • 如果基本分页是框架之外的目标,那么您可以执行一些操作,例如传递默认值为 0 的 start 参数。然后返回最后一个元素值和先前的响应。例如,您调用 start=5 并在响应中显示 next=10,因此您在下一个 api 调用中调用 start=10。查询集[start:start+5]
    猜你喜欢
    • 2020-12-21
    • 1970-01-01
    • 2015-01-28
    • 2011-04-05
    • 1970-01-01
    • 2012-05-17
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多