首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WSGI容器中使用扭曲的单词

在WSGI容器中使用扭曲的单词
EN

Stack Overflow用户
提问于 2011-10-29 17:44:55
回答 1查看 363关注 0票数 5

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

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

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

感谢您的回复。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-30 09:22:36

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

要确定wsgi容器是否是多线程的,请检查wsgi.multithread,它应该为扭曲的容器返回true。

WSGI容器是多线程的,可以同时支持多个请求(这并不是必须的,但它使使用现有软件变得更容易)。否则(如果您不使用其他方法来解决此问题),当您的请求处理程序等待来自数据库的应答时,整个服务器将阻塞。有些人发现,如果没有太多并发请求,编写请求处理程序会更简单,而不会担心阻塞其他请求。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7938112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档