2014-04-29 1 views
2

나는 flong을 사용하여 MongoDB 사용자 데이터를 모니터링하기위한 관리 웹 사이트를 구축합니다. 내 쿼리가 작동하지만 매우 느립니다. HTML을로드하는 데 약 3 ~ 5 초가 걸립니다.Flask가 Mongdb를 쿼리하는 속도가 느림

삽입 쿼리를 테스트 한 결과 0.5 초 이내에 작동합니다. 나는 그것이 서버 문제라고 생각하지 않는다.

플라스크 코드

@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) 

플라스크 코드 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) 

이인가 (상기 코드와 같은 결과를 표시하는 동일한 속도()는 MongoDB를 연결하는 pymongo 사용) 전체 데이터베이스를 계산하기 때문에 속도가 느려 집니까? 전화 번호부 데이터 테이블에는 20 개의 결과 만 있습니다.

+1

몇 개의 항목이 있습니까? 이것은 전체 컬렉션을 당기는 것입니다. 데이터베이스는 어디에 있습니까? 귀하의 신청서는 어디에서 호스팅됩니까? 어떤 종류의 하드웨어를 실행하고 있습니까? 고려해야 할 모든 것 및 질문에 제공하지 않은 정보. –

+0

@NeilLunn 상황에 대한 추가 정보를 추가했습니다. 나는 그것이 서버 문제라고 생각하지 않는다. – Jake

+0

이 "service"레이어 함수에서 "for"루프가 필요한 이유가 궁금합니다. 전체 결과 개체에서/bind/model을 전달하고 템플릿으로 렌더링 할 수 없습니까? –

답변

1

다른 데이터베이스 서버를 사용하는 경우 속도가 느려질 수 있습니다. jQuery를 사용하여 웹 사이트에 데이터를로드하십시오.