gpt4 book ai didi

python - 在 WSGI 容器中使用扭曲的词

转载 作者:太空狗 更新时间:2023-10-30 01:38:47 28 4
gpt4 key购买 nike

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

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

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

感谢您的任何回复。

最佳答案

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

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

WSGI 容器是多线程的,一次支持多个请求(这不是绝对必要的,但它使使用现有软件的生活更轻松)。否则(如果你不使用其他方法来解决它)你的整个服务器阻塞,而你的请求处理程序等待来自数据库的答案。如果并发请求不多,有些人发现编写请求处理程序更简单,不用担心阻塞其他请求。

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

关于python - 在 WSGI 容器中使用扭曲的词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7938112/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com