我有一个Django应用程序,可以使用某种形式在数据库中保存一些数据。
我想创建一个Python脚本,在创建新记录后,立即将数据作为json发送到外部Python脚本,并且该外部Python脚本应对此数据执行某些操作。
这个问题与代码无关,但是我正在尝试尽可能具体:是否可以创建将数据发送到另一个系统的系统?在这种情况下,我需要发送的数据是从我的Django应用程序的表单提交到另一个Python脚本的记录。我想外部脚本应该监听某种URL,也许吗?我怎么能做到这一点?也许使用Webhooks?
答案 0 :(得分:1)
我建议以下内容:
您单独的应用程序仅建立一个非常简单的界面,供您的Django应用程序使用。
唯一的目的是告诉您的应用程序,其中有数据可供提取。
您可以通过一个简单的TCP或UDP套接字或一个专用的http请求来实现。没关系。
每当您的应用程序收到要做的事情的通知时,它就会通过专用的django视图进行连接,以询问可以提取哪些数据并提取数据。 您可以使用Django Rest框架。
整个观点。
Django服务器旨在提供数据并允许上传数据。 让您的特殊应用程序使用django viewa来获取和处理数据。
您的应用程序会定期轮询,或者如果您的应用程序确实必须立即做出反应,请实施一种简单的方法,即允许django通知您的应用程序。
外部应用程序可以在特定的request.session中使用请求库(https://2.python-requests.org/en/master/)连接到django服务器,以进行身份验证,获取数据并进行处理。
您的Django服务器只需公开一个url /一个允许获取所有数据的视图。可以是手动编码视图,也可以是使用django rest框架编码的视图。典型的交换格式为json,但完全取决于您。不要忘记保护这些URL,这样只有经过授权的用户才能连接到它并获取数据。
现在的问题是如何触发动作。这取决于很多事情。您的外部服务器只是等待来自一台django服务器还是来自多台django服务器的新数据?
您可以只在外部程序中使用http.server(线程服务器)。它会监听外部请求,并获取例如要连接的django服务器的url和一个ID,以获取和处理数据。 根据处理的持续时间,外部程序可能会立即确认请求,但是一旦有工作人员就将信息放入队列并进行处理。在不了解所有细节,运行时间,复杂性和基础结构以及相关安全方面的情况下,所有这些都很难说。
答案 1 :(得分:0)
您可以直接点击可以在其他服务中创建的api端点。一个在django应用程序中获取数据,点击另一个api传递该数据。如果您可以分享更多详细信息,我将能够以更详尽的方式提供答案。