Flask 查询 Mongodb 很慢

Posted

技术标签:

【中文标题】Flask 查询 Mongodb 很慢【英文标题】:Flask is slow to query Mongdb 【发布时间】:2014-06-14 21:01:01 【问题描述】:

我使用 flaks 构建了一个用于监控 MongoDB 用户数据的管理网站。我的查询正在运行,但速度很慢。加载 html 大约需要 3~5 秒。

我测试了插入查询,它的工作时间不到 0.5 秒。我不认为这是服务器问题。

Flask代码A(使用pymongo连接MongoDB)

@app.route('/admin/dashboard/phonebook')
def admin_phonebook():
    collection = db.phonebook
    cnt = collection.find().count()
    result = collection.find()
    for i in range(cnt):
        flash(result[i]['name'],'name')
        flash(result[i]['phone'],'phone')
    return render_template('admin/dashboard/phonebook.html',length = cnt)

Flask Codes B(与上述代码显示结果的速度相同)

@app.route('/admin/dashboard/phonebook_register')
def admin_phonebook_register():
    collection = db.phonebook
    result = collection.find().sort('reg_date',-1)
    cnt = collection.find(,'_id':0).count()
    for i in range(cnt):
        flash(result[i]['name'],'name')
        flash(result[i]['phone'],'phone')
    return render_template('admin/dashboard/phonebook_register.html',length = cnt)

这是因为我计算了整个数据库而变慢了吗?电话簿数据表只有 20 个结果。

【问题讨论】:

有多少条目?这是拉动整个系列。你的数据库在哪里?您的应用程序托管在哪里?您正在运行什么样的硬件。所有需要考虑的事项以及您在问题中未提供的信息。 @NeilLunn 我添加了有关情况的更多信息。我不认为这是服务器问题。 我很好奇为什么你需要在这个“服务”层函数中使用“for”循环,你不能在整个结果对象中传递/绑定/模型并让它由你的模板呈现吗? 你是对的.. 我应该将整个结果发送到 HTML。它是 MongoDB,它是 JSON 类型的数据库。我从没想过将 JSON 数据转换为 HTML 文件。 “for”循环是在 Flask flatform 上以 HTLM 显示数据的方法之一。 如何将整个结果发送到 html?我必须使用 JSON 吗? 【参考方案1】:

如果您使用不同的数据库服务器,它可能会很慢。使用 jQuery 在网站上加载您的数据。

【讨论】:

以上是关于Flask 查询 Mongodb 很慢的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb聚合——排序让查询变得很慢

MongoDB小集合查询很慢

MongoDB状态查询:db.serverStatus()

mongoDB配置

mongodb

mongodb创建索引很慢怎么办