Python 在WSGI容器中使用扭曲词

Python 在WSGI容器中使用扭曲词,python,django,asynchronous,wsgi,twisted.words,Python,Django,Asynchronous,Wsgi,Twisted.words,我正在wsgi容器中的twisted上运行django。显然,我在django代码中避免使用延迟的所有异步功能,因为根据文档,WSGI应用程序中不允许使用扭曲异步功能 但是,我想在WSGI应用程序中使用twisted.words向jabber服务器发送请求。这算不算是异步的东西,还是我可以在我的应用程序中使用它?如果我向WSGI中的xmpp服务器发送twisted.words jabber请求,会发生什么 此外,我还有一个更一般性的问题。twisted的WSGI容器是多线程的(是多线程的吗?),

我正在wsgi容器中的twisted上运行django。显然,我在django代码中避免使用延迟的所有异步功能,因为根据文档,WSGI应用程序中不允许使用扭曲异步功能

但是,我想在WSGI应用程序中使用twisted.words向jabber服务器发送请求。这算不算是异步的东西,还是我可以在我的应用程序中使用它?如果我向WSGI中的xmpp服务器发送twisted.words jabber请求,会发生什么

此外,我还有一个更一般性的问题。twisted的WSGI容器是多线程的(是多线程的吗?),因为众所周知,python的GIL只会降低带有线程的脚本的总体性能


感谢您的回复。

要从另一个线程(非I/O线程,即WSGI应用程序线程)调用Twisted中的主事件循环(I/O线程)中的函数,您可以使用
reactor.callFromThread()
。如果要等待结果,请使用
threads.blockingCallFromThread()
。因此,您可以调用使用twisted的函数

要确定wsgi容器是否是多线程的,请检查wsgi.multi-thread,对于twisted容器,它应该返回true

WSGI容器是多线程的,一次可以支持多个请求(严格来说这不是必需的,但使用现有软件会使工作更轻松)。否则(如果您不使用其他方法来解决它),当您的请求处理程序等待来自数据库的响应时,整个服务器都会阻塞。有些人发现编写请求处理程序更简单,如果并发请求不多,就不必担心阻塞其他请求

Python中的函数在性能重要时执行CPU密集型作业,可以使用在计算期间释放GIL的库,或者将它们卸载到其他进程。网络应用程序中频繁出现的磁盘I/O通常比CPU慢得多