इंटरऑपरेबिलिटी के कारण, मुझे एक वेब सेवा के रूप में एक एप्लिकेशन को तैनात करने की आवश्यकता है। मैं ऐसा करने के लिए स्पाईन (http://spyne.io/) का उपयोग कर रहा हूं, ws के लिए एक अजगर ढांचा। अब तक सब ठीक है।

हालाँकि, सेवा को एक साथ कई अनुरोध प्राप्त होंगे। इसलिए, मुझे कार्यक्षमता बढ़ाने की आवश्यकता है, क्योंकि अनुरोध कई I/O (डेटाबेस, फ़ाइल) कार्य करता है।

निम्न कोड स्पाइन में एक बुनियादी वेब सेवा का उदाहरण देता है। उसके आधार पर, क्या स्पाइन थ्रेड पूल या थ्रेडिंग का समर्थन करता है? मैं सेवा को एकाधिक थ्रेड में कैसे सक्रिय या लपेट सकता हूं? यदि संभव नहीं है, तो मैं इसे पायथन थ्रेडिंग लाइब्रेरी के साथ कैसे प्राप्त कर सकता हूं?

अग्रिम में धन्यवाद।

from spyne import Application, rpc, ServiceBase, Integer
from spyne.protocol.soap import Soap11
from spyne.server.wsgi import WsgiApplication

class HelloWorldService(ServiceBase):
    @rpc(Integer, Integer, _returns=Integer)
    def multiply(ctx, a, b):
        return a * b

application = Application([HelloWorldService],
    tns='spyne.multiply',
    in_protocol=Soap11(validator='lxml'),
    out_protocol=Soap11()
)

if __name__ == '__main__':
    # You can use any Wsgi server. Here, we chose
    # Python's built-in wsgi server but you're not
    # supposed to use it in production.
    from wsgiref.simple_server import make_server
    wsgi_app = WsgiApplication(application)
    server = make_server('0.0.0.0', 8000, wsgi_app)
    server.serve_forever()
1
Marcos Roriz Junior 11 जुलाई 2020, 09:16

1 उत्तर

सबसे बढ़िया उत्तर

स्पाईन सिंगल-थ्रेडेड या मल्टीथ्रेडेड सेटिंग्स में ब्लॉकिंग/एसिंक कोड दोनों के साथ काम करता है।

यदि आपको कई थ्रेड्स के साथ कंसीडर करने की आवश्यकता है, तो एक WSGI सर्वर का उपयोग करें जो कई थ्रेड्स को हैंडल करने में सक्षम हो, जैसे CherryPy, ट्विस्टेड, mod_wsgi, आदि। WSGI रेफरेंस इम्प्लीमेंटेशन जिसे आप कोड सैंपल (wsgiref) में इस्तेमाल करते हैं, कॉन्करेंसी को सपोर्ट नहीं करता है।

यदि आपको एसिंक विधि कॉल के साथ समवर्ती करने की आवश्यकता है, तो मुड़ का उपयोग करें।

उदाहरण https://github.com/arskom/spyne/tree/master/ पर स्थित हैं। उदाहरण

1
Burak Arslan 13 जुलाई 2020, 19:01