Используйте что-то вроде CherryPy или paste.httpserver. Вы можете использовать сервер wsgiref, и он обычно работает нормально локально, но если вы делаете Ajax, однопоточный характер wsgiref может вызвать некоторые нечетные результаты или если вы когда-либо выполняете подзапрос, вы получите условие гонки. Но в большинстве случаев все будет хорошо. Это может быть полезным для вас не иметь встроенный потоковый сервер (оба CherryPy и paste.httpserver являются потоковыми), и в этом случае wsgiref будет полезен (все запросы будут запускаться из одного потока).
Обратите внимание, что если вы используете CherryPy или paste.httpserver, все запросы будут выполняться автоматически в подпотоках (эти пакеты создают нерестилища для вас), и вы, вероятно, не сможете напрямую коснуться кода GUI из своего веб-кода (поскольку код GUI обычно не нравится обрабатывать потоки). Для любого из них блоки кода сервера, поэтому вам нужно создать поток для запуска сервера. Twisted может работать в вашем обычном цикле событий GUI, но если это не важно, это добавляет много сложности.
Не используйте BaseHTTPServer или SimpleHTTPServer, они глупые и сложные, и в все случаях, где вы можете использовать, тогда вы должны использовать wsgiref вместо этого. Каждый отдельный случай, поскольку wsgiref имеет здравый API (WSGI), в то время как у этих серверов есть глупые API.
Этот сценарий (http://bitbucket.org/julian/hatta-mirror/src/tip/hatta_gtkicon.py) очень близок к тому, что я искал. Он также использует wsgiref. – btbytes