каков рекомендуемый способ работать, встроенный веб-сервер в рамках настольного приложения (скажите что wsgi сервер с pyqt),

Настольное приложение должно запустить веб-сервер на запуске и должно завершить работу его на завершении.

Предположение, что рабочий стол является единственным клиентом, позволило соединяться с веб-сервером, что лучший способ состоит в том, чтобы записать этому?

И веб-сервер и рабочий стол, выполненный в блокирующемся собственном цикле. Так, я должен использовать потоки или многопроцессорную обработку?

6
задан btbytes 8 June 2010 в 21:28
поделиться

3 ответа

Используйте что-то вроде CherryPy или paste.httpserver. Вы можете использовать сервер wsgiref, и он обычно работает нормально локально, но если вы делаете Ajax, однопоточная природа wsgiref может вызвать некоторые странные результаты, или если вы когда-нибудь сделаете подзапрос, вы получите состояние гонки. Но в большинстве случаев все будет в порядке. Возможно, вам будет полезно не иметь встроенного потокового сервера (и CherryPy, и paste.httpserver являются потоковыми), в этом случае wsgiref будет полезен (все запросы будут выполняться из одного потока).

Обратите внимание, что при использовании CherryPy или paste.httpserver все запросы будут автоматически выполняться в подпотоках (эти пакеты выполняют порождение потоков за вас), и вы, вероятно, не сможете напрямую обращаться к коду GUI из вашего веб-кода (поскольку код GUI обычно не любит, когда его обрабатывают потоки). В любом из них серверный код блокируется, поэтому вам нужно породить поток для запуска сервера. Twisted может выполняться в обычном цикле событий GUI, но если это не важно, это добавляет много сложностей.

Не используйте BaseHTTPServer или SimpleHTTPServer, они глупы и сложны, и во всех случаях, когда вы можете их использовать, вместо них следует использовать wsgiref. В каждом отдельном случае, поскольку wsgiref имеет нормальный API (WSGI), в то время как эти серверы имеют глупые API.

6
ответ дан 16 December 2019 в 21:34
поделиться

В Sauce RC мы используем CherryPy. Поскольку это чистый Python, его очень легко внедрить (в виде исходников на диске или в zip-файле).

1
ответ дан 16 December 2019 в 21:34
поделиться

Взгляните на пакет BaseHTTPServer или, еще лучше, на SimpleHTTPServer . Довольно просто и удобно.

1
ответ дан 16 December 2019 в 21:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: