从外部网页获取django模型的实时数据



我有一个Django应用程序和一些模型,我想从外部源实时获取数据。

class Register(models.Model):
student_id=models.IntegerField() 
temperature=models.TextField(max_length=300)

我想要这个模型持有的数据只能从另一个网站访问。我曾尝试创建一个web scrapy来获取实时数据,但效率不高。如果有一个有效的方法来处理这件事,让我。

这听起来像是一个后台任务,需要比基本web服务器更多的基础设施。我建议使用docker-compose来设置:

  1. 任务调度程序-我推荐celery-beat
  2. 消息队列-我推荐redis或rabbitmq
  3. celery-worker——这是一个Django包,允许基于Django
  4. 中的代码触发和处理后台任务。
  5. flower -这是一个队列管理工具,有一个很好的UI,可以看到celery-worker和消息队列
  6. 内部发生了什么。

这将允许你生成一个基于cron-schedule的任务,它可以与你的Django应用交互并提取你需要的实际数据。您需要为celery-worker设置自己的Docker。django的web服务器除了flower, rabbitmq/redis和celry -beat都有公共的图片,你可以直接在docker-compose中引用。好运!

从概念上讲,最佳方法不是一直获取数据,而是仅在数据更改时采取行动。所以,如果你在控制这个外部网站,我建议你触发一个事件(发送一个请求)到Django中配置的webhook。如果你有太多的请求,队列服务是一个很好的选择来处理这个问题。

如果你不控制数据源,那么我猜你必须安排一个任务来不断获取数据,但我建议你设置一个外部服务(或容器)来做这件事,因为你不会在Django上创建开销

最新更新