Fil*_*tny 5 python django asynchronous wsgi twisted.words
我在wsgi容器中运行django.显然,我在django代码中避免使用延迟的所有异步内容,因为根据文档,WSGI应用程序中不允许使用扭曲的异步功能.
但是,我想在我的WSGI应用程序中使用twisted.words将请求发送到jabber服务器.这算是异步的东西还是我可以在我的应用程序中使用它?如果我将twisted.words jabber请求发送到WSGI内的xmpp服务器会发生什么?
而且,我有一个更普遍的问题.有什么理由扭曲的WSGI容器是多线程的(它是多线程的吗?)因为众所周知python的GIL只会降低带线程的脚本的整体性能.
谢谢你的回复.
要从另一个线程(非 I/O 线程,即 WSGI 应用程序线程)调用 Twisted 中主事件循环(I/O 线程)中的函数,您可以使用reactor.callFromThread(). 如果您想等待结果,请使用threads.blockingCallFromThread(). 因此,您可以调用使用“twisted.words请参阅在 Twisted 中使用线程”的函数。
要查明 wsgi 容器是否是多线程的,请检查wsgi.multithread它对于扭曲容器应返回 true。
WSGI 容器是多线程的,可以一次支持多个请求(这不是绝对必要的,但它使使用现有软件的生活更轻松)。否则(如果您不使用其他方法来解决它),当您的请求处理程序等待数据库的答复时,您的整个服务器将被阻塞。有些人发现编写请求处理程序更简单,不用担心如果并发请求不多的话会阻塞其他请求。
当性能很重要时,Python 中执行 CPU 密集型作业的函数可以使用在计算期间释放 GIL 或将其卸载到其他进程的库。Web 应用程序中频繁出现的网络、磁盘 I/O 通常比 CPU 慢得多。
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |