我的 Flask 应用程序需要抓取另一个网页,以便每分钟左右更新一些数据库信息。所以我做了一个后台任务来完成这项工作,但不幸的是它似乎并没有真正修改数据库,默默地失败了。
我有一个如下所示的数据库连接:
配置文件:
class Configuration(object):
DATABASE = {
'name': 'database.db',
'engine': 'peewee.SqliteDatabase',
'check_same_thread': False,
}
__ 初始化 __.py:
import flask
app = flask.Flask(__name__)
from flask_peewee.db import Database
app.config.from_object('config.Configuration')
db = Database(app)
然后我在@app.route() 函数中读/写数据库条目。这是后台任务scrape.py
:
from myapp import *
db.connect_db()
while True:
#scrape and update the database with commands similar to:
user = User.get(id=5)
user.value += 1
user.save()
当我将代码与我的其他视图一起放入时,该代码有效,例如:
@app.route("/scrape")
def scrape_update_db():
user = User.get(id=5)
user.value += 1
user.save()
return "Done"
然后定期将我的网络浏览器定向到 /scrape。所以我可以改为创建一个只连接到http://localhost:80/scrape
每一分钟的后台任务。但这似乎相当复杂,我认为它的计算效率不高(服务器在弱硬件上运行)或可维护。
如何在后台更新数据库条目?