我写了一个简单的应用程序,可以在线获取股票报价,并发布买入/卖出订单。现在这一切都是通过控制台完成的。我阅读并阅读了有关Flask网络应用程序的几个教程。但我无法在获取同时显示在Flask应用程序上的信息时弄清楚如何运行服务器。
目标是获取我的监视列表的引号,并将其显示在我的index.html(localhost)
这是我试图无效的:
在一个线程中运行我的循环请求,另一个线程运行服务器。 - 服务器无法启动!
运行嵌套在main()中的app.run()。
请指出我正确的学习方向。
app = Flask(__name__)
@app.route('/')
def index(watchlist=None):
return render_template("index.html", watchlist=watchlist)
app.run()
#################主要代码的大部分功能被删除以便易读
def main():
qt = Questrade.Questrade()
qt.update_all()
watchlist = Watchlist.Watchlist(qt.quotes)
loop_count = 0
while 1:
print("loop start")
qt.update_all()
watchlist.update_stocks(qt.quotes)
loop_count += 1
print("loop end")
print(loop_count)
time.sleep(10)
答案 0 :(得分:2)
如果您想运行后台任务,请考虑使用celery或apscheduler。
关于如何使用芹菜在任务中执行后台任务的答案。
请配置像this
这样的芹菜celery.conf.beat_schedule = {
'watch-every-10-seconds': {
'task': 'tasks.watchstock',
'schedule': 10.0,
'args': (16, 16)
},
}
按celery beat --app myproject
from flask import Flask
flask_app = Flask(__name__)
flask_app.config.update(
CELERY_BROKER_URL='redis://localhost:6379',
CELERY_RESULT_BACKEND='redis://localhost:6379'
)
celery = make_celery(flask_app)
@celery.task()
def watchstock():
--- your function code ---
创建可在循环中执行的任务函数,以便为您获取库存,然后将其保存到数据库中。