Server Web incorporato in Python? [chiuso]
-
08-07-2019 - |
Domanda
Puoi consigliare un webserver minimalista in Python che posso incorporare nella mia applicazione desktop.
Soluzione
Quanto minimalista e per quale scopo?
SimpleHTTPServer è gratuito come parte delle librerie Python standard.
Se hai bisogno di più funzionalità, consulta CherryPy o (nella parte superiore) Contorto .
Altri suggerimenti
Sto diventando un grande fan dei circuiti appena pubblicati biblioteca. È un framework di componenti / eventi che viene fornito con un set molto bello di pacchetti per la creazione di server Web e amp; app. Ecco il semplice esempio web dal sito:
from circuits.lib.web import Server, Controller
class HelloWorld(Controller):
def index(self):
return "Hello World!"
server = Server(8000)
server += HelloWorld()
server.run()
Anche il suo supporto WSGI non è più complicato di così. Roba buona.
Se stai facendo molte cose simultanee, potresti prendere in considerazione Kamaelia 's HTTPServer .
Ho trovato web.py abbastanza facile da usare: http://webpy.org/
Se si desidera utilizzare qualcosa dalla libreria standard, consiglio vivamente non di utilizzare SimpleHTTPServer, ma invece di utilizzare wsgiref.simple_server
. SimpleHTTPServer è un modo imbarazzante e piuttosto insensato per implementare un'applicazione web, e mentre WSGI raw non è terribilmente facile (ma certamente possibile), hai la possibilità di usare qualsiasi framework basato su WSGI su di esso. Inoltre, se usi wsgiref avrai la possibilità di passare a un server come CherryPy in seguito (tieni presente che il server in CherryPy può essere utilizzato separatamente dal resto del framework e hai solo bisogno di un file solo per il server). Per un "reale" l'applicazione Web CherryPy presenta numerosi vantaggi rispetto a wsgiref, ma per un'applicazione ospitata localmente è improbabile che qualcuno di questi abbia importanza.
Se stai creando un'applicazione desktop dovrai avviare un thread separato per wsgiref o CherryPy. Se va bene, allora un server basato su WSGI sarebbe probabilmente il più semplice. Se non vuoi avviare un thread separato per il server, molto probabilmente dovrai usare Twisted.
Vedi l'implementazione riferimento WSGI .