У меня есть простое приложение колбу:

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    text = '<h2>Text: </h2><form><input name="firstname" type="text">'
    select = '<h2>Select: </h2><select name="cars">' + \
              '<option value="volvo">Volvo</option>' + \
              '<option value="saab">Saab</option>' + \
              '<option value="fiat">Fiat</option> ' + \
              '<option value="audi">Audi</option>' + \
            '</select>'
    multiselect = '<h2>Multiselect: </h2><select name="mCars" multiple>' + \
              '<option value="volvo">Volvo</option>' + \
              '<option value="saab">Saab</option>' + \
              '<option value="fiat">Fiat</option> ' + \
              '<option value="audi">Audi</option>' + \
            '</select>'
    textarea = '<h2>Textarea: </h2><textarea name="message" rows="10" cols="30">' + \
                'The cat was playing in the garden.' + \
                '</textarea>'
    button = '<h2>Button</h2><button type="button" onclick="alert(\'Hello World!\')">Click Me!</button>'
    # datalist = '<h2>Datalist</h2><datalist id="browsers">' + \
    #               '<option value="Internet Explorer">' + \
    #               '<option value="Firefox">' + \
    #               '<option value="Chrome">' + \
    #               '<option value="Opera">' + \
    #               '<option value="Safari">' + \
    #             '</datalist> '
    return '<h1>Sample Form</h1>' + \
           text + \
           select + \
           multiselect + \
           textarea + \
           button


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

Когда я запускаю сам файл, он запускается:

 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Я пытаюсь запустить его из файла бегуна и продолжить выполнение файла. Он останавливается, когда работает колба. Я попробовал следующее.

os.system('python ' + get_driver_file_path(Settings.TestProjectPath))

Я думаю, что это имеет смысл, потому что я просто управляю этим.

Я пытался, и он также работает, но останавливает выполнение:

subprocess.call([Settings.PythonExecutablePath, get_driver_file_path(Settings.TestProjectPath)])

Я устал:

server = Popen(get_driver_file_path(Settings.TestProjectPath), stdout=PIPE, stderr=PIPE, shell=True)

Это, похоже, ничего не делает.

Как я могу заставить его работать на сервере фляги и продолжить выполнение?

0
David Tunnell 3 Июл 2019 в 21:15

3 ответа

Я успешно запустил subprocess.Popen(['python3', 'app.py']) на своей локальной машине, так что это должно работать технически. Единственное, в чем я не уверен, это то, что я запустил это в терминале, и закрытие терминала могло бы также закрыть подпроцесс.

1
Ruben Helsloot 3 Июл 2019 в 18:38

Вы не хотите запускать приложение Flask , а затем продолжать свой сценарий.

На самом деле вы хотите запустить приложение Flask и продолжить работу скрипта во время его работы.

Я предполагаю, что multiprocessing «порождение» - это то, что вам нужно для начала приложение Flask.

Возможно, вам придется подождать, пока новый процесс (например, прослушивание localhost:5000) действительно начнет обслуживать запросы, если последующие шаги вашего скрипта зависят от его запуска.

0
9000 3 Июл 2019 в 18:50
from threading import Thread

if __name__ == '__main__':
    Thread(target=app.run).run()
    print("App is running")
0
Kurtis Streutker 4 Июл 2019 в 20:28