Python 从命令行/GUI控制flask服务器
首先:我试图编写GUI来控制Flask simple server,这样我就可以将我的应用程序分发给noobs(使用PyInstaller) 我使用多处理启动烧瓶,然后将其关闭,但关闭它似乎是个问题。我编写了简单的cli控制器作为概念证明,但它甚至忽略了sys.exit() 代码: 但结果让我大吃一惊: (表示我按了回车键)Python 从命令行/GUI控制flask服务器,python,flask,multiprocessing,Python,Flask,Multiprocessing,首先:我试图编写GUI来控制Flask simple server,这样我就可以将我的应用程序分发给noobs(使用PyInstaller) 我使用多处理启动烧瓶,然后将其关闭,但关闭它似乎是个问题。我编写了简单的cli控制器作为概念证明,但它甚至忽略了sys.exit() 代码: 但结果让我大吃一惊: (表示我按了回车键) user@localhost:~$/run.py 输入内容:*正在运行http://127.0.0.1:5000/ *使用重新加载程序重新启动 输入某物:x 没有一个 到此
user@localhost:~$/run.py
输入内容:*正在运行http://127.0.0.1:5000/
*使用重新加载程序重新启动
输入某物:x
没有一个
到此为止
全部完成!
user@localhost:~$Traceback(最近一次呼叫上次):
文件“/run.py”,第42行,在
x=原始输入(“输入某物:”)
伊奥费罗
烧瓶还在运转
server.join(),但Flask仍在运行
if\uuuu name\uuuuu==“\uuuu main\uuu:”
中包装从server=…
到break
的所有内容,但没有结果我错过了什么 我仍然不明白为什么以前的版本不起作用,但我找到了这个解决方案:
from Tkinter import *
from ttk import *
import multiprocessing
from myapp import app
def make_ui(server):
def terminate_server():
if server is not None and server.is_alive():
server.terminate()
main.destroy()
def toggle_server():
global server
if server.is_alive():
server.terminate()
server.join()
else:
if server.exitcode:
server = multiprocessing.Process(target=run_in_behind, name="server")
server.start()
main = Tk()
appname = Label(main, text="Sociometry v.0.0.1", anchor="center")
appname.grid(row=0, column=0, columnspan=2, pady=2)
main.mainloop()
def run_in_behind():
config = {
"HOST": "127.0.0.1"
}
app.config.from_object(config)
app.run()
if __name__ == "__main__":
server = multiprocessing.Process(target=run_in_behind, name="server")
make_ui(server)
user@localhost:~$ ./run.py
Input something: * Running on http://127.0.0.1:5000/
* Restarting with reloader
Input something:x
None
end here
All done!
user@localhost:~$ <Enter> Traceback (most recent call last):
File "./run.py", line 42, in <module>
x = raw_input("Input something:")
EOFError
from Tkinter import *
from ttk import *
import multiprocessing
from myapp import app
def make_ui(server):
def terminate_server():
if server is not None and server.is_alive():
server.terminate()
main.destroy()
def toggle_server():
global server
if server.is_alive():
server.terminate()
server.join()
else:
if server.exitcode:
server = multiprocessing.Process(target=run_in_behind, name="server")
server.start()
main = Tk()
appname = Label(main, text="Sociometry v.0.0.1", anchor="center")
appname.grid(row=0, column=0, columnspan=2, pady=2)
main.mainloop()
def run_in_behind():
config = {
"HOST": "127.0.0.1"
}
app.config.from_object(config)
app.run()
if __name__ == "__main__":
server = multiprocessing.Process(target=run_in_behind, name="server")
make_ui(server)