使用Python xmlrpclib与unix域套接字?

使用Python xmlrpclib与unix域套接字?,第1张

概述我正在尝试与supervisord进行交互,我想通过一个unix套接字(这是一个共享的主机环境)来谈论它. 我迄今为止所尝试的是: import xmlrpclibserver = xmlrpclib.ServerProxy('unix:///path/to/supervisor.sock/RPC2')Traceback (most recent call last): File "<st 我正在尝试与supervisord进行交互,我想通过一个unix套接字(这是一个共享的主机环境)来谈论它.

我迄今为止所尝试的是:

import xmlrpclibserver = xmlrpclib.ServerProxy('unix:///path/to/supervisor.sock/RPC2')Traceback (most recent call last):  file "<stdin>",line 1,in <module>  file "/usr/local/lib/python2.7/xmlrpclib.py",line 1549,in __init__    raise IOError,"unsupported XML-RPC protocol"IOError: unsupported XML-RPC protocol

/path/to/supervisor.sock绝对存在. “unix:///path/to/supervisor.sock/RPC2”形式的URI由supervisord使用,这是我想到的地方.该文档不讨论unix套接字:http://docs.python.org/library/xmlrpclib.html.

这可能吗?我应该使用不同的图书馆吗?

解决方法 xmlrpclib要求传递的网址以http或https开头.这样做的方法是定义一个忽略该URL的自定义传输.以下是使用从主管传输的一些代码:
import supervisor.xmlrpcimport xmlrpclibproxy = xmlrpclib.ServerProxy('http://127.0.0.1',transport=supervisor.xmlrpc.SupervisorTransport(                                    None,None,serverurl='unix://'+socketpath))proxy.supervisor.getState()

如果没有用,这里是一个更新的代码版本here:

class UnixStreamhttpconnection(httplib.httpconnection,object):    def __init__(self,*args,**kwargs):        self.socketpath = kwargs.pop('socketpath')        super(UnixStreamhttpconnection,self).__init__(*args,**kwargs)    def connect(self):        self.sock = socket.socket(socket.AF_UNIX,socket.soCK_STREAM)        self.sock.connect_ex(self.socketpath)class UnixStreamTransport(xmlrpclib.Transport,**kwargs):        self.socketpath = kwargs.pop('socketpath')        super(UnixStreamTransport,**kwargs)
总结

以上是内存溢出为你收集整理的使用Python xmlrpclib与unix域套接字?全部内容,希望文章能够帮你解决使用Python xmlrpclib与unix域套接字?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1207316.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存