5

My Python aplikacji internetowych nazywa appJak skonfigurować nazwę mojej aplikacji WSGI na AWS Elastic Beanstalk?

# example.py 
import flask 

app = flask.Flask(__name__.split('.')[0]) 

i gdy próbuję uruchomić go na AWS-EB korzystając

# run.py (set correctly with WSGIPath) 
from example import app 

if __name__ == "__main__": 
    app.run() 

uzyskać

mod_wsgi (pid = 22473): Docelowy skrypt WSGI "/opt/python/current/app/run.py" nie zawiera "aplikacji" WSGI.

Jak poinformować AWS, że moja instancja aplikacji nazywa się app?

+0

Tak, dobre referencje (ale niektóre z nich nie działały dla mnie, zobacz moje powiązane pytania). – orome

+0

Jeśli podstawowa odpowiedź nie działa dla ciebie, powinieneś wyjaśnić, co wypróbowałeś i dlaczego to nie działa w twoim pytaniu. W ten sposób przyszli czytelnicy, którzy mieli ten sam problem, w pełni zrozumieją odpowiedź. –

Odpowiedz

10

mod_wsgi oczekuje zmiennej o nazwie application. Spróbuj zrobić coś jak ten

from example import app as application 

Uwaga: nie rób application.run(). To nie jest potrzebne.

+0

Wow, więc wszystko, czego potrzebuje AWS, to instancja o nazwie 'application'; cała treść 'run.py' może być tym pojedynczym importem, prawda? – orome

+0

Czy to prawda, że ​​dla AWS (w przeciwieństwie do, powiedzmy, Heroku), w ogóle nie musi być skryptu * run *, tylko plik, w którym zdefiniowana jest instancja o nazwie 'application'. – orome

+0

Zwykle do celów programistycznych moduł z aplikacją zawiera plik app.run() w sekcji __name__ == '__main__' na dole pliku. Dobrą praktyką jest tworzenie pliku .wsgi, który importuje aplikację. –