Python 在桌面应用程序中运行嵌入式web服务器的推荐方式是什么(例如,使用pyqt的wsgi服务器)

Python 在桌面应用程序中运行嵌入式web服务器的推荐方式是什么(例如,使用pyqt的wsgi服务器),python,user-interface,desktop,pyqt,wsgi,Python,User Interface,Desktop,Pyqt,Wsgi,桌面应用程序应在启动时启动web服务器,并在关闭时将其关闭 假设桌面是唯一允许连接到web服务器的客户机,那么编写此文件的最佳方式是什么 web服务器和桌面都在各自的阻塞循环中运行。那么,我应该使用线程还是多处理呢?看看软件包,或者更好地看一下。非常简单易用。在中,我们使用。由于它是纯Python,因此很容易将其嵌入(作为磁盘或zip文件中的源代码)。使用CherryPy或paste.httpserver之类的工具。您可以使用wsgiref的服务器,它通常在本地正常工作,但是如果您使用Ajax,

桌面应用程序应在启动时启动web服务器,并在关闭时将其关闭

假设桌面是唯一允许连接到web服务器的客户机,那么编写此文件的最佳方式是什么


web服务器和桌面都在各自的阻塞循环中运行。那么,我应该使用线程还是多处理呢?

看看软件包,或者更好地看一下。非常简单易用。

在中,我们使用。由于它是纯Python,因此很容易将其嵌入(作为磁盘或zip文件中的源代码)。

使用CherryPy或paste.httpserver之类的工具。您可以使用wsgiref的服务器,它通常在本地正常工作,但是如果您使用Ajax,wsgiref的单线程特性可能会导致一些奇怪的结果,或者如果您执行子请求,您将获得竞争条件。但在大多数情况下都可以。不使用嵌入式线程服务器(CherryPy和paste.httpserver都是线程化的)可能会对您有所帮助,在这种情况下,wsgiref会很有用(所有请求都将从同一线程运行)

请注意,如果使用CherryPy或paste.httpserver,所有请求将自动发生在子线程中(这些包为您生成线程),并且您可能无法直接从web代码中触摸GUI代码(因为GUI代码通常不喜欢由线程处理)。对于它们中的任何一个,都是服务器代码块,因此需要生成一个线程来启动服务器。Twisted可以在正常的GUI事件循环中运行,但除非这很重要,否则它会增加很多复杂性

不要使用BaseHTTPServer或SimpleHTTPServer,它们既愚蠢又复杂,在所有可能使用的情况下,都应该使用wsgiref。每一种情况,如wsgiref,都有一个健全的API(WSGI),而这些服务器都有愚蠢的API。

这个脚本()非常接近我想要的。它也使用wsgiref。