我一直在我的笔记本电脑上运行Python3.6脚本,现在我想将它部署到GCP App Engine。我已经使用他们的教程和其他人将脚本转换为WSGI。但是,我无法让后台任务继续运行,也能够使用该路径查看输出。
这是简单的样本。使用这个我可以看到/ route输出消息Hello World!
from flask import Flask
app = Flask(__name__)
@app.route('/')
def main():
"""Say hello"""
return 'Hello, world!'
if __name__ == '__main__':
app.run()
如果我添加一个while循环,循环工作,但路由不再起作用。这是有道理的,我只是不知道将while语句作为后台任务运行的语法。我已经看过CRON的例子,但这是经常运行的 - 不是每隔X分钟就会运行一次。
from flask import Flask
app = Flask(__name__)
@app.route('/')
counter = 0
while True:
counter += counter
print(counter)
def main():
"""Say hello"""
return 'Hello, world! ' + str(counter)
if __name__ == '__main__':
app.run()
更新:我应该使用吗? Flask-APScheduler为此?:https://github.com/viniciuschiele/flask-apscheduler
答案 0 :(得分:2)
解决这个问题的一种方法是创建两个路由 - 一个启动计数器,然后返回计数本身。请注意,我已添加" threaded = True"允许多次通话。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def main():
"""Say hello"""
global index_counter
print(index_counter)
return "Hello World: %s" % str(index_counter)
@app.route('/counter')
def counter():
global index_counter
index_counter = 0
while True:
index_counter += 1
if __name__ == '__main__':
app.run(threaded=True)
现在,您可以先调用:
这将启动计数器。
然后在任何时候你都可以调用: http://localhost
并且应该打印出计数器值。