问题标签 [simplexmlrpcserver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6066 浏览

python - python:嵌套线程SimpleXMLRPCServers时的httplib.CannotSendRequest

在使用使用 SocketServer.ThreadingMixin 的 SimpleXMLRPCServer 链时,我间歇性地收到 httplib.CannotSendRequest 异常。

我所说的“链”是指:

我有一个客户端脚本,它使用 xmlrpclib 调用 SimpleXMLRPCServer 上的函数。该服务器又调用另一个 SimpleXMLRPCServer。我意识到这听起来多么令人费解,但是选择这种架构是有充分理由的,我看不出有什么理由不应该这样做。

  • 如果我不使用 SocketServer.ThreadingMixin 则不会发生此问题(但我需要请求是多线程的,所以这无济于事。)
  • 如果我只有一个级别的服务(即直接调用最终服务器的客户端脚本),这不会发生。

我已经能够在下面的简单测试代码中重现该问题。有以下三个片段:

最终服务器:

中间服务器:

测试客户端:

要重现,应使用以下步骤:

  1. 运行 python finalserver.py
  2. 运行 python middleserver.py
  3. 运行 python testclient.py
  4. 当 (3) 仍在运行时,运行另一个 python testclient.py 实例

很多时候(几乎每次)您第一次尝试运行第 4 步时都会收到以下错误。有趣的是,如果您立即尝试再次运行第 (4) 步,则不会发生错误。

互联网似乎说这个异常可能是由于多次调用 httplib.HTTPConnection.request 而没有干预 getresponse 调用。但是,Internet 并没有在 SimpleXMLRPCServer 的上下文中讨论这个问题。任何有关解决 httplib.CannotSendRequest 问题的指示将不胜感激。

==================================================== =========================================== 答案:

好吧,我有点傻。我想我盯着代码看的时间太长了,以至于我错过了直面我的明显解决方案(从字面上看,因为答案实际上是在实际问题中。)

基本上,CannotSendRequest 发生在 httplib.HTTPConnection 被介入的“请求”操作中断时。每个 httplib.HTTPConnection.request 必须与 .getresponse() 调用配对。如果该配对被另一个请求操作中断,则第二个请求将产生 CannotSendRequest 错误。所以:

将失败,因为在调用任何 getresponse 之前,您在同一连接上有两个请求。

将其与我的问题联系起来:

  1. 三个程序中唯一建立此类连接的地方是 serverproxy 调用。
  2. 该问题仅在线程期间发生,因此很可能是竞争条件。
  3. 共享 serverproxy 调用的唯一位置是 middleserver.py

那么解决方案显然是让每个线程创建它自己的服务器代理。中间服务器的固定版本如下,它可以工作:

由于此版本导致每个线程都有自己的 xmlrpclib.serverproxy,因此不存在同一serverproxy 实例连续多次调用 HTTPConnection.request 的风险。这些程序按预期工作。

抱歉打扰了。

0 投票
0 回答
213 浏览

jython - 要让 SimpleXMLRPCServer 工作,Jython 需要什么?

我尝试了SimpleXMLRPCServer的 python 文档中的第一个示例。

它在 python 中工作得非常好,但是当我使用 jython 尝试它时,我得到以下堆栈跟踪:

我在 python 方面比 java 更有经验,所以我不知道如何解决这个问题。我的系统是否缺少依赖项,或者我是否需要摆弄类路径?

编辑:我用 Jython 网站上的独立版本重新尝试了这个,他们工作了,所以看起来 Ubuntu 的安装版本可能有问题?

0 投票
1 回答
4174 浏览

python - Python 的 xmlrpc 非常慢:每次调用一秒钟

根据 Python 文档中的示例,我使用 SimpleXMLRPCServer 在 Python 中构建了一个 xml-rpc 服务器。我从同一台机器上的 Python 客户端调用它。服务器函数的主体自行执行非常快。

但是我发现 xmlrpc 客户端的性能非常慢,每次调用需要一秒钟。(使用 xmlrpclib。)

我在网上找到的一种加速技术(跳过 getfqdn 分辨率)没有帮助。

我的连接 URI 是:

我在 Windows 7 上运行 Python 2.7 x64,但它对 32 位 Python 2.7 的工作方式相同。

0 投票
2 回答
6281 浏览

python - Python 多线程 XMLRPC 服务器 (?)

基本上我想在单独的线程中或与我的其他代码一起运行我的 xmlrpc 服务器,但是,server.serve_forever()在此函数之后我无法让我的另一个代码运行。似乎server.serve_forever()永远在那里运行。

我尝试了多线程概念,但这里仍然没有运气。基本上我想与我的其余代码一起运行 xmlrpc 服务器。

谢谢你的帮助。

0 投票
1 回答
804 浏览

python - 将任意代码注入 Python SimpleXMLRPC 服务器

在 python SimpleXMLRPC Server的 python 文档中,提到了:

警告 启用 allow_dotted_names 选项允许入侵者访问您模块的全局变量,并可能允许入侵者在您的机器上执行任意代码。仅在安全、封闭的网络上使用此选项。

现在我有一个服务器,代码如下:

请解释如何利用该漏洞将任意代码注入服务器?如果我上面的代码不是易受攻击的,那么举一个可以被利用的例子和客户端代码这样做。

0 投票
1 回答
5472 浏览

python - How to get the output of XMLRPC server (Python 2.7.3)?

I got XMLRPC server/client from python website. When I run simple methods like pow(),add(),div() from Windows, the client gets the result correctly. However, when I run brocade() which gets the configuration information from Brocade switch using python modules(PyCrypto, Paramiko), and returns the string output as return value which takes a little like 2-3 seconds (it might take longer depending on the switch command). I observed that the server executes correctly and prints the output, but the client gets a message like below.

The server displays

Do you have any idea how the client can get the result of brocade()?

Thank you, Spark.

xmlrpcserver2.py

xmlrpcclient2.py

0 投票
1 回答
488 浏览

python - 在继承自 SimpleXMLRPCServer 的类的 __init__ 上调用 serve_forever

这是错的吗?

所有这些功能都已声明并按预期工作。我不知道这是否可能,python 不会抛出任何错误,但我无法使用它连接到它

这是代理服务器的代码:

这是我得到的错误

0 投票
4 回答
772 浏览

python - QooxDoo FrontEnd + Python BackEnd (SimpleXMLRPCServer) 问题

我已经尝试过 Qooxdoo 并使用 SimpleXMLRPCServer 制作了一个简单的 Python 服务器,通过 Python 测试我可以毫无问题地获取数据,但是我可以从 Qooxdoo 获取这些数据吗?我迷路了,我已经搜索了 3 天,但没有得到解决方案。

我试试这个:

我尝试了其他选择,但一无所获:(

文件链接:

http://mieresdelcamin.es/owncloud/public.php?service=files&dir=%2Fjesus%2Ffiles%2FQooxdoo

我尝试并阅读了所有 qooxdoo-contrib。


出色地,

RpcPython --> 好的

并在 class/qooxdoo -> test.py

运行服务器 [start-server.py] 并从 webroser 查询:

webroser 中的回复是:

qx.io.remote.ScriptTransport._requestFinished(1,{"error": null, "id": 1, "result": "客户说:[Por fin]"});

但是如果我从 qooxdoo 查询,比如回复是 [error.png]

qooxdoo 的代码:

我输了 :((

文件在:

http://mieresdelcamin.es/owncloud/public.php?service=files&dir=%2Fjesus%2Ffiles%2FQooxdoo

好吧,使用 Firebug,owncloud qx.io.remote.ScriptTransport 中的这个错误......被检测到

¿?................

此致。

0 投票
0 回答
822 浏览

python - Xml-RPC 服务器 Python - 多调用请求?

假设我的代码如下所示:

现在假设我有很多客户端调用,那么是否有很多 XML-RPC 服务器的列出过程或客户端请求排队(必须结束一个请求才能为另一个请求提供服务)

是否有可能使用 Python XML-RPC 服务器处理多呼叫客户端请求?

0 投票
1 回答
4580 浏览

python - xmlrpc 响应数据类型可能长吗?

是否有可能允许long intPython simplexmlrpc 服务器的 xmlrpc 扩展(数据类型)?

客户端使用 Apache xmlrpc,它允许 8 字节整数

基本上,我使用带有这个函数的示例代码来测试它:

导致此错误:

有任何想法吗?是否有任何支持 Python 2.7 的 xmlrpc 服务器long int