Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为Java接口编写Python数据分析服务器_Python_Sockets_Ipc - Fatal编程技术网

为Java接口编写Python数据分析服务器

为Java接口编写Python数据分析服务器,python,sockets,ipc,Python,Sockets,Ipc,我想为Java接口编写数据分析插件。此接口可能在不同的计算机上运行。接口将发送命令,Python程序可以返回大数据。该接口由Java Webstart系统分发。两者都从MySQL服务器访问主数据 实施沟通的不同方式和优势是什么?当然,我在互联网上做过一些研究。虽然有很多建议,但我仍然不知道有什么不同,以及如何决定一个。(我对他们一无所知) 我发现了一个使用插座的建议,看起来不错。为每个连接编写一个专门的Python分析过程的服务器是否简单(临时数据可能在特定客户机的一个通信请求之后保存) 我想学

我想为Java接口编写数据分析插件。此接口可能在不同的计算机上运行。接口将发送命令,Python程序可以返回大数据。该接口由Java Webstart系统分发。两者都从MySQL服务器访问主数据

实施沟通的不同方式和优势是什么?当然,我在互联网上做过一些研究。虽然有很多建议,但我仍然不知道有什么不同,以及如何决定一个。(我对他们一无所知)

我发现了一个使用插座的建议,看起来不错。为每个连接编写一个专门的Python分析过程的服务器是否简单(临时数据可能在特定客户机的一个通信请求之后保存)

我想学习如何使用套接字和传递YAML字符串。 也许我的主要问题是:RabbitMQ、ZeroMQ、CORBA、SOAP、XMLRPC等系统的关系和优势是什么

还有人建议使用管道或共享内存。但那不符合我的要求

这些方法在调试或其他方面是否有优势

我希望有人能帮助我理解这项技术,并帮助我决定解决方案,因为很难从技术描述中做出判断


(我不考虑Jython,JEPP,……)< /P> < P>对你所描述的优点提出意见,听起来你正在处理可能需要大量时间来获取和序列化的潜在的大数据/查询,在这种情况下,您肯定希望使用能够处理并发连接而不堆积线程的东西。因此,在Python领域,除了Twisted之外,我不能推荐任何网络库

无论您决定使用香草HTTP还是您自己的协议,twisted几乎是并发网络的一站式服务。当然,这个名字经常被人提及,而且文档是亚特兰蒂斯的,但是如果你花时间去学习它,在网络领域你几乎做不到什么。您可以扩展基本协议和工厂,使一台服务器能够在基于reactor的事件循环中处理您的数据,并在准备就绪时响应延迟请求

序列化格式实际上取决于数据的性质。在作为响应的输出中是否有任何二进制文件?复杂类型?这就排除了JSON,尽管JSON正在成为最常见的序列化格式。YAML有时似乎在python社区中享有特权——我没有广泛地使用它,因为我对serials所做的大多数工作都是使用javascript在前端呈现数据

当您需要延迟后台任务而不挂起响应时,消息队列实际上是工具箱中最重要的工具。它们通常用于web应用程序中,在需要进行的复杂处理完成之前,HTTP请求不应挂起,因此UI可以提前呈现,并依赖于处理将发生的隐式“承诺”。它们有两个重要的特性:它们依赖于最终的一致性,即在发送协议中的响应后,进程可以在很长时间内完成,并且它们还具有故障保护和任务失败时重试的指令。他们是你在“尽快完成这项非常艰巨的任务,我相信你能完成”问题域中的转折点


如果我们不是在讨论潜在的巨大响应体,以及序列化输出中相对简单的数据类型,那么在Twisted中滚动一个简单的HTTP延迟服务器没有什么错。

谢谢!这是一个很好的解释。你是说twisted避免了线程的一些问题(我也不知道)?但我仍然可以有单独的服务器进程,在一个连接客户端的请求之间保持通信状态?HTTP有一些限制,对于简单的命令,YAML的原始传输可以吗?响应可能包含MB大小的数据。如果每个客户端连接都有一个线性进程,那么我似乎不需要队列?Twisted让您定义自己的协议,它本质上是如何定义握手、“谁何时发送什么”和连接契约的。HTTP本身只是其中之一,它定义了响应和请求的语法。Twisted的美妙之处在于reactor模式,它通过编程方式处理事件循环,消除了对OS线程的需求。您可以在协议中维护状态,与无状态HTTP不同,有大量的示例聊天服务器教程可以做到这一点。它实际上是一个网络库,而不仅仅是一个简单的http侦听器。