创建一个 SimpleHTTPServer 以将 python 代码用作 API
Create a SimpleHTTPServer to use the python code as API
有没有办法让我的 python 脚本由简单的 HTTP 服务器提供服务,并以 API 的哲学从外部(在另一个程序中)调用脚本函数?
编辑
好的,感谢@upman 的回答,我知道我可以为此使用 SimpleXMLRPCServer
,问题仍然是:如何在另一个程序中收听 XML-RPC 服务器python 以外的其他语言(例如 Node.js)
您要的是远程过程调用 (RPC)
您可以查看 Python
中的 SimpleXMLRPCServer 模块
服务器代码
from SimpleXMLRPCServer import SimpleXMLRPCServer
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler
# Restrict to a particular path.
class RequestHandler(SimpleXMLRPCRequestHandler):
rpc_paths = ('/RPC2','/')
# Create server
server = SimpleXMLRPCServer(("localhost", 8000),
requestHandler=RequestHandler)
server.register_introspection_functions()
# Register pow() function; this will use the value of
# pow.__name__ as the name, which is just 'pow'.
server.register_function(pow)
# Register a function under a different name
def adder_function(x,y):
return x + y
server.register_function(adder_function, 'add')
# Register an instance; all the methods of the instance are
# published as XML-RPC methods (in this case, just 'div').
class MyFuncs:
def div(self, x, y):
return x // y
server.register_instance(MyFuncs())
# Run the server's main loop
server.serve_forever()
Python 客户端
import xmlrpclib
s = xmlrpclib.ServerProxy('http://localhost:8000')
print s.pow(2,3) # Returns 2**3 = 8
print s.add(2,3) # Returns 5
print s.div(5,2) # Returns 5//2 = 2
# Print list of available methods
print s.system.listMethods()
来源:https://docs.python.org/2/library/simplexmlrpcserver.html
编辑
XMLRPC 是一个 standard protocol,所以有它的实现
在大多数流行语言中。节点也有一个 package 。
你可以像这样用 npm 安装
npm install xmlrpc
你可以用它调用上面的python服务器
Javascript 客户端
var xmlrpc = require('xmlrpc')
var client = xmlrpc.createClient({ host: 'localhost', port: 8000, path: '/'})
// Sends a method call to the XML-RPC server
client.methodCall('pow', [2,2], function (error, value) {
// Results of the method response
console.log('Method response for \'anAction\': ' + value)
})
还有一个 jQuery implementation xmlrpc。因此,您可以从浏览器创建 RPC。
有没有办法让我的 python 脚本由简单的 HTTP 服务器提供服务,并以 API 的哲学从外部(在另一个程序中)调用脚本函数?
编辑
好的,感谢@upman 的回答,我知道我可以为此使用 SimpleXMLRPCServer
,问题仍然是:如何在另一个程序中收听 XML-RPC 服务器python 以外的其他语言(例如 Node.js)
您要的是远程过程调用 (RPC)
您可以查看 Python
中的 SimpleXMLRPCServer 模块服务器代码
from SimpleXMLRPCServer import SimpleXMLRPCServer
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler
# Restrict to a particular path.
class RequestHandler(SimpleXMLRPCRequestHandler):
rpc_paths = ('/RPC2','/')
# Create server
server = SimpleXMLRPCServer(("localhost", 8000),
requestHandler=RequestHandler)
server.register_introspection_functions()
# Register pow() function; this will use the value of
# pow.__name__ as the name, which is just 'pow'.
server.register_function(pow)
# Register a function under a different name
def adder_function(x,y):
return x + y
server.register_function(adder_function, 'add')
# Register an instance; all the methods of the instance are
# published as XML-RPC methods (in this case, just 'div').
class MyFuncs:
def div(self, x, y):
return x // y
server.register_instance(MyFuncs())
# Run the server's main loop
server.serve_forever()
Python 客户端
import xmlrpclib
s = xmlrpclib.ServerProxy('http://localhost:8000')
print s.pow(2,3) # Returns 2**3 = 8
print s.add(2,3) # Returns 5
print s.div(5,2) # Returns 5//2 = 2
# Print list of available methods
print s.system.listMethods()
来源:https://docs.python.org/2/library/simplexmlrpcserver.html
编辑
XMLRPC 是一个 standard protocol,所以有它的实现 在大多数流行语言中。节点也有一个 package 。 你可以像这样用 npm 安装
npm install xmlrpc
你可以用它调用上面的python服务器
Javascript 客户端
var xmlrpc = require('xmlrpc')
var client = xmlrpc.createClient({ host: 'localhost', port: 8000, path: '/'})
// Sends a method call to the XML-RPC server
client.methodCall('pow', [2,2], function (error, value) {
// Results of the method response
console.log('Method response for \'anAction\': ' + value)
})
还有一个 jQuery implementation xmlrpc。因此,您可以从浏览器创建 RPC。