废话不多说,直接上代码 ,server.py
#!/usr/bin/python
from soaplib.service import soapmethod
from soaplib.serializers.primitive import String, Integer, Array
from soaplib.wsgi_soap import SimpleWSGISoapApp
class HelloWorldService(SimpleWSGISoapApp):
@soapmethod(String, _returns=String)
def says(self,name):
return name
def make_client():
from soaplib.client import make_service_client
client = make_service_client('http://192.168.1.87:17889', HelloWorldService()) (注1)
return client
if __name__=='__main__':
try:
import flup.server.fcgi as flups
#这里的HelloWorldService后面必须带括号,不然会出错
#flups.WSGIServer(HelloWorldService(), multithreaded=True, multiprocess=False, bindAddress=('127.0.0.1', 17900)).run() (注2)
flups.WSGIServer(HelloWorldService()).run() (注3)
except ImportError:
print "Error: example server code requires Python >= 2.5"
注1: 这里的17889是nginx对外公布的端口,注意和下边的 17900端口的区别
如果不想用fastcgi的形式运行的话,那么就用注2 的那行代码,并且直接在命令行里面输入:python server.py(这里的17900监听的nginx,它只接受nginx传过来的参数,外部无法直接访问)
而如果要用fastcgi的话,那么就用注3的那行代码,并且在命令行输入 :
spawn-fcgi -f /data/www/server.py -a 127.0.0.1 -p 17900 -u www -F 2 (spawn-fcgi的用法参照 nginx上用fastcgi配置python环境(二))
到这一步以后 ,我们就可以运行客户端代码 client.py
#!/usr/bin/python
from server import make_client
a = make_client()
print a.says('hello,world')
直接python client.py,就可以得到 hello,world 的字样