问题标签 [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.
python - python:嵌套线程SimpleXMLRPCServers时的httplib.CannotSendRequest
在使用使用 SocketServer.ThreadingMixin 的 SimpleXMLRPCServer 链时,我间歇性地收到 httplib.CannotSendRequest 异常。
我所说的“链”是指:
我有一个客户端脚本,它使用 xmlrpclib 调用 SimpleXMLRPCServer 上的函数。该服务器又调用另一个 SimpleXMLRPCServer。我意识到这听起来多么令人费解,但是选择这种架构是有充分理由的,我看不出有什么理由不应该这样做。
- 如果我不使用 SocketServer.ThreadingMixin 则不会发生此问题(但我需要请求是多线程的,所以这无济于事。)
- 如果我只有一个级别的服务(即直接调用最终服务器的客户端脚本),这不会发生。
我已经能够在下面的简单测试代码中重现该问题。有以下三个片段:
最终服务器:
中间服务器:
测试客户端:
要重现,应使用以下步骤:
- 运行 python finalserver.py
- 运行 python middleserver.py
- 运行 python testclient.py
- 当 (3) 仍在运行时,运行另一个 python testclient.py 实例
很多时候(几乎每次)您第一次尝试运行第 4 步时都会收到以下错误。有趣的是,如果您立即尝试再次运行第 (4) 步,则不会发生错误。
互联网似乎说这个异常可能是由于多次调用 httplib.HTTPConnection.request 而没有干预 getresponse 调用。但是,Internet 并没有在 SimpleXMLRPCServer 的上下文中讨论这个问题。任何有关解决 httplib.CannotSendRequest 问题的指示将不胜感激。
==================================================== =========================================== 答案:
好吧,我有点傻。我想我盯着代码看的时间太长了,以至于我错过了直面我的明显解决方案(从字面上看,因为答案实际上是在实际问题中。)
基本上,CannotSendRequest 发生在 httplib.HTTPConnection 被介入的“请求”操作中断时。每个 httplib.HTTPConnection.request 必须与 .getresponse() 调用配对。如果该配对被另一个请求操作中断,则第二个请求将产生 CannotSendRequest 错误。所以:
将失败,因为在调用任何 getresponse 之前,您在同一连接上有两个请求。
将其与我的问题联系起来:
- 三个程序中唯一建立此类连接的地方是 serverproxy 调用。
- 该问题仅在线程期间发生,因此很可能是竞争条件。
- 共享 serverproxy 调用的唯一位置是 middleserver.py
那么解决方案显然是让每个线程创建它自己的服务器代理。中间服务器的固定版本如下,它可以工作:
由于此版本导致每个线程都有自己的 xmlrpclib.serverproxy,因此不存在同一serverproxy 实例连续多次调用 HTTPConnection.request 的风险。这些程序按预期工作。
抱歉打扰了。
jython - 要让 SimpleXMLRPCServer 工作,Jython 需要什么?
我尝试了SimpleXMLRPCServer的 python 文档中的第一个示例。
它在 python 中工作得非常好,但是当我使用 jython 尝试它时,我得到以下堆栈跟踪:
我在 python 方面比 java 更有经验,所以我不知道如何解决这个问题。我的系统是否缺少依赖项,或者我是否需要摆弄类路径?
编辑:我用 Jython 网站上的独立版本重新尝试了这个,他们工作了,所以看起来 Ubuntu 的安装版本可能有问题?
python - Python 的 xmlrpc 非常慢:每次调用一秒钟
根据 Python 文档中的示例,我使用 SimpleXMLRPCServer 在 Python 中构建了一个 xml-rpc 服务器。我从同一台机器上的 Python 客户端调用它。服务器函数的主体自行执行非常快。
但是我发现 xmlrpc 客户端的性能非常慢,每次调用需要一秒钟。(使用 xmlrpclib。)
我在网上找到的一种加速技术(跳过 getfqdn 分辨率)没有帮助。
我的连接 URI 是:
我在 Windows 7 上运行 Python 2.7 x64,但它对 32 位 Python 2.7 的工作方式相同。
python - Python 多线程 XMLRPC 服务器 (?)
基本上我想在单独的线程中或与我的其他代码一起运行我的 xmlrpc 服务器,但是,server.serve_forever()
在此函数之后我无法让我的另一个代码运行。似乎server.serve_forever()
永远在那里运行。
我尝试了多线程概念,但这里仍然没有运气。基本上我想与我的其余代码一起运行 xmlrpc 服务器。
谢谢你的帮助。
python - 将任意代码注入 Python SimpleXMLRPC 服务器
在 python SimpleXMLRPC Server的 python 文档中,提到了:
警告 启用 allow_dotted_names 选项允许入侵者访问您模块的全局变量,并可能允许入侵者在您的机器上执行任意代码。仅在安全、封闭的网络上使用此选项。
现在我有一个服务器,代码如下:
请解释如何利用该漏洞将任意代码注入服务器?如果我上面的代码不是易受攻击的,那么举一个可以被利用的例子和客户端代码这样做。
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
python - 在继承自 SimpleXMLRPCServer 的类的 __init__ 上调用 serve_forever
这是错的吗?
所有这些功能都已声明并按预期工作。我不知道这是否可能,python 不会抛出任何错误,但我无法使用它连接到它
这是代理服务器的代码:
这是我得到的错误
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 中的这个错误......被检测到
¿?................
此致。
python - Xml-RPC 服务器 Python - 多调用请求?
假设我的代码如下所示:
现在假设我有很多客户端调用,那么是否有很多 XML-RPC 服务器的列出过程或客户端请求排队(必须结束一个请求才能为另一个请求提供服务)
是否有可能使用 Python XML-RPC 服务器处理多呼叫客户端请求?