用python發(fā)布基于soap的webservice(二)在 用python發(fā)布基于soap的webservice(一) 文章中,,咱用的是python自帶的wsgiref包,,它是一個輕量級的web服務(wù)器,用來做做測試啊,, 調(diào)bug的之類的是可以的,但是直接拿來做真正的服務(wù)器卻還是不行。 所以本文主要討論的是如何用 python + nginx + fastcgi + flup + soaplib 這些工具來構(gòu)建一個可以承受高并發(fā)的Webservice ============================================================================================================= 廢話不多說,,直接上代碼 ,server.py #!/usr/bin/python from soaplib.service imp from soaplib.serializers.primitive imp from soaplib.wsgi_soap imp class HelloWorldService(SimpleWSGISoapApp): @soapmethod(String, _returns=String) def says(self,name): return name def make_client(): from soaplib.client imp client = make_service_client('http://192.168.1.87:17889', HelloWorldService()) (注1) return client if __name__=='__main__': try: imp #這里的HelloWorldService后面必須帶括號,,不然會出錯 #flups.WSGIServer(HelloWorldService(), multithreaded=True, multiprocess=False, bindAddress=('127.0.0.1', 17900)).run() (注2) flups.WSGIServer(HelloWorldService()).run() (注3) except Imp print "Error: example server co 注1: 這里的17889是nginx對外公布的端口,注意和下邊的 17900端口的區(qū)別 如果不想用fastcgi的形式運行的話,,那么就用注2 的那行代碼,并且直接在命令行里面輸入:python server.py(這里的17900監(jiān)聽的nginx,,它只接受nginx傳過來的參數(shù),,外部無法直接訪問) 而如果要用fastcgi的話,那么就用注3的那行代碼,,并且在命令行輸入 : spawn-fcgi -f /da 到這一步以后 ,,我們就可以運行客戶端代碼 client.py #!/usr/bin/python from server imp a = make_client() print a.says('hello,world') 直接python client.py,就可以得到 hello,world 的字樣
來自:http://blog.163.com/sky20081816@126/blog/static/16476102320109156135531/ |
|