【问题标题】:Django communicating with another python application?Django与另一个python应用程序通信?
【发布时间】:2020-02-16 02:53:33
【问题描述】:

是否有可能让 django 在服务器上运行,并且来自 django 的一个应用程序与另一个 python 进程进行通信,说我开发并从中获取响应,甚至让它只执行特定操作?

可以是同步的,也可以是异步的;我有一些异步的想法,其中可以使用一些包,如 hendrix、crossbar.io 甚至 celery。但是我不明白这种相互通信的名称是什么,我应该如何规划它的架构。

在我的脑海中,我有以下两种情况,我正在寻求制定计划:

1.

假设我有 django 和一个带有 python 包 smtp 的电子邮件发件人。向视图发出请求的用户将使 django 执行我为向特定用户发送电子邮件而开发的 python 模块(使用来自 google/gmail 的 smpt 服务器)。它可以是同步的或异步的。

2

我有 django(一些应用程序),我希望它与我维护的一些服务器进行通信;说让这个服务器执行一些代码或只是获取一个文件(如果它是一个 ftp 服务器)。这是指向“微服务”一词的合适情况吗?或者这里有其他术语或解决方法?

【问题讨论】:

    标签: django python-3.x asynchronous server microservices


    【解决方案1】:

    您的第一个解决方案将被称为可安装的 python 模块,就像您使用 pip 安装的任何软件包一样。如果您需要您的代码可在多个或未来的项目中重复使用,您可以将其作为一个单独的模块。

    您的第二个解决方案是微服务。这将需要将您的小模块设置为可以与 REST API 进行通信并使其执行您想要执行的任何操作的服务。

    如果您的问题是“什么是正确的方法”,那么我会告诉您这取决于您的用例。如果这只是一些您不想在我们的项目中一遍又一遍地重复的可重用代码,那么只需将其放入单独的模块中即可。如果这是您期望其他构建的服务将使用和依赖的服务,那么只需将其制成微服务即可。您可以使用 Flask 等微框架来更轻松、更快速地设置服务。否则,如果它只是一些您将使用一次并在您的应用程序上提供单一功能的代码,那么只需编写并保留它。

    对于应采用哪种方法没有规则或标准。我个人根据用例来判断。

    希望这会有所帮助!

    【讨论】:

    • 感谢您清除一些概念和术语!我很好奇我将如何在 django 视图中实现这个模块:导入模块的函数并在 django 的同步上下文中执行它?这听起来合乎逻辑。但是,如果我希望我创建的模块在另一个单独的进程中执行,那么这将是“异步”,我应该寻找像“芹菜”这样的异步方式来处理这个问题,对吧?
    • 是的,您需要一个队列和工作人员为您异步执行此操作。
    • 嗨@devdob你能用简短的例子探索第二种解决方案吗
    猜你喜欢
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    相关资源
    最近更新 更多