2013-04-27 11 views
8

Ho un sito Web scritto in bottle e mi piacerebbe distribuirlo tramite l'Elastic Beanstalk di Amazon. Ho seguito il tutorial for deploying flask che speravo sarebbe stato simile. ho cercato di adattare le istruzioni per imbottigliare, rendendo il requirements.txt questo:Non riesco a far funzionare la bottiglia su Elean Beanstalk

bottle==0.11.6 

e sostituito la versione fiasco base del file application.py con questo:

from bottle import route, run 
@route('/') 
def hello(): 
    return "Hello World!" 
run(host='0.0.0.0', debug=True) 

ho aggiornato a questa versione come spiegato nel tutorial, e quando ho scritto eb status dice che è verde, ma quando vado all'URL non viene caricato nulla. Si blocca lì. Ho provato il metodo run() alla fine come è mostrato sopra e anche come è scritto nell'applicazione mondo ciao bottiglia (cioè run(host='localhost', port=8080, debug=True)) e nessuno dei due sembrava funzionare. Ho anche provato sia lo @route('/hello') che lo @route('/').

Sono andato e l'ho fatto con il pallone invece (vale a dire esattamente come dice il tutorial di Amazon) e ha funzionato bene. Significa che non posso usare la bottiglia con il beanstalk elastico? O c'è qualcosa che posso fare per farlo funzionare?

Grazie mille, Alex

EDIT: Con l'aiuto di aychedee, alla fine ho ottenuto di lavorare utilizzando il seguente file di applicazione:

from bottle import route, run, default_app 
application = default_app() 
@route('/') 
def hello(): 
    return "Hello bottle World!" 

if __name__ == '__main__': 
    application.run(host='0.0.0.0', debug=True) 
+0

Wow, hai completamente salvato la mia giornata! – jbkkd

risposta

7

E 'possibile che il server WSGI è alla ricerca di application variabile all'interno di application.py? È così che capisco che funzioni per Flask.

application = bottle.default_app() 

La variabile dell'applicazione è WSGI application as specified in PEP 333. È un callable che prende l'ambiente e una funzione start_response. Quindi le applicazioni Flask e Bottle WSGI hanno esattamente la stessa interfaccia.

Forse ... Ma poi sono confuso sul motivo per cui è necessario che e la chiamata a run.

+0

Hmm forse, il beanstalk usa il proprio server wsgi o quello incorporato nel pallone (o bottiglia)? Il programma Hello World [per pallone] (http://flask.pocoo.org/docs/quickstart/) prevede di creare quell'oggetto dell'applicazione, mentre [quello per il flacone] (http://bottlepy.org/docs/dev/ tutorial.html) no. Non sono sicuro di poter realizzare un oggetto applicativo come quello per la bottiglia in qualche modo e che potrebbe funzionare? –

+0

Sì, puoi provare. La linea che ho incluso nella mia risposta è come si ottiene l'app WSGI dalla struttura della bottiglia. – aychedee

+0

Ok, l'ho fatto e ho ottenuto un po 'di più ma ora mi sta dando un "Errore interno del server", e dice 'Apache/2.2.22 (Amazon) Server at test-env-ppamp7m3yc.elasticbeanstalk.com Port 80' at il fondo. Non sapevo che stavo anche eseguendo Apache, non dovrebbe funzionare con il proprio server di test? –

Problemi correlati