2017-01-15 6 views
-1

Ich baute eine einfache Web-App mit Flask. Was dies bedeutet ist grundsätzlich Daten aus einer Form und sendet eine POST - die dann als Befehlszeilenargument an das Skript übergeben wirdAzure fehlgeschlagen Python-Skript ausführen

os.popen("python3 script.py " + postArgument).read() 

Der Befehl wird in einer Variablen gespeichert, die dann auf ein Element geleitet wird, in eine neue Seite mit den Ergebnissen.

Über das Skript: Es wird mit der Zeichenfolge in der POST über eine API, bekommt einige Daten, verarbeitet sie, sendet sie an eine andere API und schließlich gibt die Ergebnisse (die in der Variablen schließlich gespeichert werden)

Es funktioniert auf einem lokalen Server. Aber Azure kann nichts zurückgeben. Die Zeichenfolge ist leer.

Wie bekomme ich einige Terminalprotokolle?

Gibt es eine Lösung?

+0

Funktioniert das Ausführen von 'python3' nur in Ihrer Azure-VM? Gibt es einen Grund, warum Sie 'script.py' nicht als Modul in Ihrem vorhandenen Skript verwenden, anstatt einen neuen Binärprozess außerhalb Ihres bestehenden zu starten? – MatsLindh

+0

@MatsLindh Sorry für mein Unverständnis. Warum behandeln Sie nicht die Post-Daten mit Flask, wenn es aus einem Formular über HTTP-Post-Anfrage kommt? –

+0

@ PeterPan-MSFT Die POST-Daten werden von Flask verarbeitet. Der Punkt ist, wie bekomme ich die Ausgabe des Skripts zurück auf die Webseite –

Antwort

0

Per meiner Erfahrung, so scheint es, dass das Problem durch den Python 3 verursacht wurde (auch für Python 2) Dolmetscher python auf Azure genannt, nicht python3.

Wenn Sie also die Python 3-Laufzeitumgebung für die Anwendungseinstellungen auf Azure Portal wie in der Abbildung unten konfiguriert haben, verwenden Sie bitte python script.py anstelle von python3 script.py in Ihrem Code.

enter image description here

Oder Sie können auch den absoluten Pfad von Python 3 auf Azure WebApp D:\Python34\python statt python3 in Ihrem Code verwenden, wie unten.

enter image description here

Ich bezweifle jedoch, auch eine andere mögliche Problem für Sie neben dem oben genannten Fall. Sie können einige Python-Pakete verwenden, die nicht unter Verwendung von pip auf Azure installiert werden. Wenn dies der Fall ist, müssen Sie den Abschnitt Troubleshooting - Package Installation des offiziellen Azure-Dokuments für Python lesen, um das mögliche Problem zu beheben.

Ich hoffe, es hilft. Irgendwelche Bedenken & Update, bitte zögern Sie nicht, lassen Sie es mich wissen.

+0

Keines scheint zu funktionieren. Gibt es eine andere Möglichkeit, wie ich das Skript ausführen und die Post-Daten als Parameter übergeben könnte? –

Verwandte Themen