首页 > 解决方案 > 将数据从 Django 应用程序发送到另一个 Python 脚本

问题描述

我有一个 Django 应用程序,可以使用表单将一些数据保存在我的数据库中。

我想创建一个 Python 脚本,一旦创建新记录,就会将该数据作为 json 发送到外部 Python 脚本,并且这个外部 Python 脚本应该对这些数据执行一些操作。

这个问题与代码无关,但我试图尽可能具体:有没有办法创建一个将数据发送到另一个系统的系统?在这种情况下,我需要发送的数据是从我的 Django 应用程序表单提交到另一个 Python 脚本的记录。我假设外部脚本应该监听某种 URL,也许?我怎么能做到这一点?也许使用 Webhooks?

标签: pythondjangopost

解决方案


我建议如下:

您的单独应用程序只建立了一个非常简单的界面,您的 django 应用程序可以使用该界面。

唯一的目的是告诉您的应用程序,有数据准备好获取。

您可以通过一个简单的 TCP 或 UDP 套接字或通过一个专用的 http 请求来实现这一点。这并不重要。

每当您的应用程序收到有事情要做的通知时,它将通过专用的 django 视图连接以询问可以获取哪些数据并获取数据。您可以使用 django 休息框架工作。

整点。

django 服务器旨在提供数据并允许上传数据。让您的特殊应用程序使用 django viewa 来获取和处理数据。

您的应用程序会定期轮询,或者如果您的应用程序确实必须立即做出反应,请实现一种简单的方法,允许 django 通知您的应用程序。

外部应用程序可以使用请求库(https://2.python-requests.org/en/master/)特别是 requests.session 连接到您的 django 服务器,进行身份验证,获取数据并处理它。

您的 Django 服务器只需公开一个 url / 一个允许获取所有数据的视图。可以是手动编码的视图或用 django rest 框架编码的东西。典型的交换格式是 json,但这完全取决于您。不要忘记保护这些 url,只有授权用户才能连接到它并获取数据。

现在的问题是如何触发动作。这取决于很多事情。您的外部服务器只是等待来自一个 django 服务器还是来自多个服务器的新数据?

您可以在外部程序中使用 http.server(线程服务器)。它会监听外部请求并获取例如要连接的 django 服务器的 url 和一个用于获取和处理数据的 id。根据处理的持续时间,外部程序可能会立即确认请求,但一旦有工作人员可用,信息就会进入队列并处理。如果不了解所有细节、运行时间、复杂性和基础设施以及相关的安全方面,这一切都很难说。


推荐阅读