我有一个简单的烧瓶应用程序:
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)
这似乎无能为力。
如何获取它以运行Flask服务器并继续执行?
答案 0 :(得分:1)
我在本地计算机上成功运行了subprocess.Popen(['python3', 'app.py'])
,因此从技术上来说应该可以运行。我唯一不确定的是我在终端中运行了此命令,而关闭终端也可能已经关闭了子进程。
答案 1 :(得分:1)
您只需要保留&即可在后台运行应用程序
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
答案 2 :(得分:0)
您不想运行Flask应用程序,然后继续执行脚本。
实际上,您想启动 Flask应用程序,并在其运行时继续执行脚本。
我想multiprocessing
"spawn"是启动Flask应用程序所需要的。
如果脚本的后续步骤取决于它的运行,则可能需要等到新进程(例如,在localhost:5000
上监听)实际开始处理请求时。
答案 3 :(得分:0)
from threading import Thread
if __name__ == '__main__':
Thread(target=app.run).run()
print("App is running")