Sostituire AppEngine devserver Con La deposizione delle uova (BaseHTTPRequestHandler come WSGI)

StackOverflow https://stackoverflow.com/questions/1293249

  •  18-09-2019
  •  | 
  •  

Domanda

che sto cercando di sostituire devserver di AppEngine con deposizione delle uova . La deposizione delle uova gestisce i gestori WSGI standard, proprio come AppEngine, in modo da correre la vostra applicazione su di esso è facile.

Ma la devserver prende in considerazione il file app.yaml che ha url reindirizza ecc Vado attraverso il codice devserver ed è abbastanza facile ottenere il BaseHTTPRequestHandler in questo modo:

from google.appengine.tools.dev_appserver import CreateRequestHandler
dev = CreateRequestHandler(os.path.dirname(__file__), '', require_indexes=False, static_caching=True)

Ma la BaseHTTPRequestHandler non è un'applicazione WSGI, quindi la mia ipotesi è che ho bisogno di mettere qualcosa intorno ad esso per farlo funzionare. Eventuali suggerimenti?

È stato utile?

Soluzione

Non credo che si sta andando ad essere in grado di tirare fuori una parte del dev_appserver e utilizzarlo in un server WSGI personalizzato così facilmente. Il dev_appserver fa un sacco di 'magia', e non è realmente strutturata in modo da essere tirato fuori e utilizzato come un involucro WSGI in un altro server (più è il peccato).

Si consiglia di controllare le T wistedAE , che sta lavorando sulla creazione di un supplente serving ambiente; se davvero si vuole utilizzare la deposizione delle uova, probabilmente si può utilizzare il lavoro di TwistedAE come base.

Detto questo, se si vuole farlo da soli, ci sono un paio di opzioni:

  1. È possibile scrivere il proprio spessore di interfacciarsi con WSGI classe restituita dal CreateRequestHandler. In tal caso, è necessario replicare l'interfaccia in BaseHTTPServer .BaseHTTPRequestHandler dal Python SDK . Conversione WSGI a quella, solo così il codice dev_appserver può convertire indietro sembra un po 'perversa, però.
  2. È possibile strappare il codice dal metodo _HandleRequest di DevAppServerRequestHandler, modificarlo per lavorare con WSGI, e creare un'applicazione WSGI da quella (probabilmente la scelta migliore se si vuole fai da te).
  3. Si può iniziare da zero, che credo sia l'approccio adottato da TwistedAE.

Una cosa da tenere a mente tutto quello che fate: App Engine si aspetta in modo esplicito un ambiente single-threaded per le sue applicazioni. Non utilizzare un approccio multithread se si desidera applicazioni per funzionare lo stesso a livello locale come fanno in produzione o sul dev_appserver!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top