【问题标题】:Python Flask - How to start python server using flask and execute it multiple times using multiple argumensPython Flask - 如何使用flask启动python服务器并使用多个参数多次执行
【发布时间】: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


【解决方案1】:

在这里,您似乎希望在运行 python 脚本时调用相同的 API(始终具有相同的端口号)。这可以通过在末尾添加app.run(port=50000, debug=True) 来完成。

通过将Def methodName(): 的主体迁移到同一目录中的不同Python 脚本并通过添加from .SubScript import * 调用该脚本,将所有@app.route() 放置在同一个python 脚本(App.py)中

SubScript.py 文件必须有在 App.py 中作为对象调用的类。并且在这些类中,方法需要被称为 def methodName(self): 才能作为对象运行

这样你就有了干净和有组织的代码库来与 python 烧瓶一起使用。如果你可以使用 Pycharm 编辑器,这个过程会容易得多。

【讨论】:

  • 谢谢。这有帮助
  • 很高兴能为您提供帮助。希望这可以为您提供足够的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多