Запустите приложение фляги и продолжите выполнение скрипта - PullRequest
0 голосов
/ 03 июля 2019

У меня есть простое приложение фляги:

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)

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

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

Ответы [ 4 ]

1 голос
/ 03 июля 2019

вам просто нужно оставить & для запуска приложения в фоновом режиме

import os
os.system("python "+ "app.py &" )
print "hello, its working, flask is running backgound "

для windows

import os
os.system("start /b python app.py")
print("It works..!")

убедитесь, что python добавлен в PATH

1 голос
/ 03 июля 2019

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

0 голосов
/ 04 июля 2019
from threading import Thread

if __name__ == '__main__':
    Thread(target=app.run).run()
    print("App is running")
0 голосов
/ 03 июля 2019

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

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

Полагаю, multiprocessing "spawn" - это то, что вам нужно для запуска приложения Flask.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...