我很难弄清楚如何通过一个小项目来解决问题。
基本上我有一个Django应用程序。另一方面,我正在运行一个外部Python脚本。我想创建一个系统,每次提交Django应用程序中的表单时,将表单中提交的数据发送到外部Python应用程序。
外部Python服务应该接收数据,读取数据,并根据用户是谁以及他提交了什么内容,它应该执行一些任务,然后发送响应。
这是我的想法:1)将外部Python应用程序连接到Django使用的同一数据库。这样,当提交表单时,它将保存在数据库中,并且可以与第二个Python服务“共享”数据。该解决方案的问题在于,我将需要第二个应用程序每秒查询一次数据库并执行很多查询,这将是性能问题。2)创建一个Epi端点,以便外部python应用程序将连接到该端点并从那里获取保存在数据库中的数据。问题与第一个解决方案相同。在这种情况下,Redis或RabbitMQ这样的服务会有所帮助吗?
在我的Django应用程序中导入外部Python进程不是解决方案,它需要与Django应用程序分开。一个重要的要求是速度。提交新数据后,第二个Python应用程序需要在尽可能短的时间内接收到新数据。
就是说,我很乐意提供任何建议或可能的解决方案来解决这个问题,在此先感谢:)
您可以使用微服务架构来构建它。与其在两个应用程序之间共享数据库,不如让它们通过Web请求相互通信。Django会使用相关数据向您的其他应用发出请求,其他服务器将以结果进行回复。
通常,人们会使用Flask
(同步服务器)或Sanic
(异步服务器)之类的东西来接收/回复,但是您也可以查看类似之类的东西Nameko
。最终,我们还将建议您研究Docker,因为您将设置更多此类微服务,因此将需要它。
这个想法是(即使用Flask
)创建一个访问点,该访问点对您的数据进行一些计算并将其返回给Django服务器。
computation.py
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route("/", methods=["POST"])
def computation():
data = request.get_json()
print(data)
return f"Hey! {data}"
app.run(host="0.0.0.0", port=8090)
Django服务器只是向您的服务器应用程序发送请求。
django_mock.py
import requests
req = requests.post('http://0.0.0.0:8090/', json={"data": "Hello"})
print(req.text)
上面的内容将在computation.py
应用程序中打印出来:
{'data': 'Hello'}
并打印出django_mock.py
示例:
Hey! {'data': 'Hello'}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句