【发布时间】:2018-06-20 11:28:08
【问题描述】:
我已经测试了基本的 Flask 脚本 (hello.py),它运行良好。我已经注释掉了主要功能路由部分并执行了脚本。
from flask import Flask
app = Flask(__name__)
''' #Commenting the Main function part
@app.route("/")
def main():
return "Welcome!"
'''
if __name__ == "__main__":
app.run(host= '0.0.0.0')
正如预期的那样,服务器已启动,我也收到以下消息:
C:\>python hello.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
现在我的要求是一旦这个python服务器启动,如何执行另一个python脚本并路由到这个python服务器。
例如,我有以下脚本需要通过浏览器执行(因为 python 服务器已经启动并运行)访问http://127.0.0.1:5000/arg1/arg2
import .....
from flask import Flask
app = Flask(__name__)
@app.route('/<string:arg1>/<string:arg2>')
def main():
do something ........
call sub-function(arg1, arg2)
do something ........
if __name__ == '__main__':
arg1 = 100
arg2 = 50
#app.run(debug=True) **#I should not run this again as server is already started.So commented it out**
main(arg1, arg2) #Calling Main function using two IDs as arguments.
注意:如果我将 app.run() 保留在需要执行的实际程序脚本中,那么它工作正常。但我的要求是服务器启动脚本实际程序脚本应该不同,但通过应用程序以某种方式相互关联。我不确定如何实现这一点。
【问题讨论】:
-
如果我理解这一点......你可以导入 python 脚本......把你的
my_script.py文件放在和烧瓶应用程序相同的目录中,然后执行import my_script。请记住,如果这会执行一些长时间运行的任务,您可能需要考虑查看celery -
我感觉你有点把事情复杂化了。你不能只导入在另一个文件中的一个文件中创建的
app吗? -
@JKC 你想从这个实现什么?如果你想在其他文件中使用代码片段,你可以将它导入到一个类中。或者您应该在此之前调用一个 init.py 文件,并使其调用所有其他 python 文件,例如在烧瓶框架中
-
感谢 mic4ael。也回复@sytech。问题是如果我将应用程序保留在同一个程序脚本中或导入 app_start 脚本并在程序脚本中执行,我相信服务器将再次启动。我不希望这种情况发生。我的要求就像启动服务器一次,并在不同的时间使用不同的参数执行程序。
-
@TharushaShehan 。谢谢您的答复。我需要实现在不同时间执行具有不同参数的相同程序脚本。但是python服务器应该只启动一次。这是否有可能或每次都应该调用 app.run() 来为我使用的每个唯一参数创建新的 Web 链接?
标签: python python-3.x flask flask-restful