我正在构建一个应用程序,我需要从API中获取一些数据,并且每隔几分钟就会使用该数据更新所有模型。
完成这样的事情会有什么干净的方法?
答案 0 :(得分:2)
嗯,这是一个非常开放的问题。
您需要创建一个每隔几分钟运行一次的任务,您可以使用Celery执行此操作。 Celery有一个任务计划器http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html将在类似于crontab的配置时间启动某个功能
然后任务将获取数据,http://docs.python-requests.org/en/master/是一个非常好的库来发出http请求。
最后但同样重要的是,您需要序列化获取的数据并将其保存到模型中。 Django休息框架序列化功能是一个很好的起点,但如果数据结构足够简单,您可以使用JSON python库json.loads(数据)并创建一个函数,将API上的字段转换为模型的字段。 / p>
顺便说一句,我假设是一个REST API。
答案 1 :(得分:0)
您可以使用具有在指定的时间间隔内运行定期任务的功能的任务管理工具,例如Periodic Tasks中的Celery。
此外,如果您在类Unix系统上运行代码,您可以坚持使用核心django功能。只需将您的功能编写为Django Management Command并设置cronjob即可在首选时间间隔内运行。