Spyne(python 网络服务框架)是否支持多线程?如果没有,有没有办法使用 Python 线程库?

Does Spyne (python web service framework) support multiple threads? If not, is there a way to do using the Python Thread Library?

由于互操作性,我需要将应用程序部署为 Web 服务。我正在使用 Spyne (http://spyne.io/) 来做到这一点,这是一个 ws 的 python 框架。到目前为止一切顺利。

但是,该服务将同时接收多个请求。因此,我需要提高性能,因为该请求执行多项 I/O(数据库、文件)任务。

以下代码示例了 Spyne 中的基本 Web 服务。基于此,Spyne 是否支持线程池或线程?如何在多个线程中激活或包装服务?如果不可能,我如何使用 Python 线程库实现它?

提前致谢。

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()

Spyne 在单线程或多线程设置中与 blocking/async 代码一起工作。

如果需要多线程并发,请使用能够处理多线程的WSGI服务器,如CherryPy、Twisted、mod_wsgi等。您在代码示例中使用的WSGI参考实现( wsgiref) 不支持并发。

如果需要使用异步方法调用并发,请使用 Twisted。

示例位于 https://github.com/arskom/spyne/tree/master/examples