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。
由于互操作性,我需要将应用程序部署为 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。