Flask/MongoDB를 백엔드로 사용하여 웹 사이트에 큰 속도 문제가 있습니다. 기본 요청 (예 : 1 명의 사용자 확보)은 응답하는 데 약 4 초가 걸립니다. 다음은 파이썬 코드 :Python (Flask) MongoDB 속도 문제
@users_apis.route('/profile/<string:user_id>',methods= ['GET','PUT','DELETE'])
@auth_token_required
def profile(user_id):
if request.method == "GET":
avatar = ''
if user_id == str(current_user.id):
if(current_user.birthday):
age = (date.today().year - current_user.birthday.year)
else:
age = ''
return make_response(jsonify({
"id" : str(current_user.id),
"username" : current_user.username,
"email" : current_user.email,
"first_name": current_user.first_name,
"last_name" : current_user.last_name,
"age" : age,
"birthday" : current_user.birthday,
"gender" : current_user.gender,
"city" : current_user.city,
"country" : current_user.country,
"languages" : current_user.languages,
"description" : current_user.description,
"phone_number" : current_user.phone_number,
"countries_visited" : current_user.countries_visited,
"countries_to_visit" : current_user.countries_to_visit,
"zip_code" : str(current_user.zip_code),
"address" : current_user.address,
"pictures" : current_user.pictures,
"avatar" : "",
"interests" : current_user.interests,
"messages" : current_user.messages,
"invitations" : current_user.invitations,
"events" : current_user.events
}), 200)
그리고 내 MongoDB를 데이터베이스는 다음과 같이 만들 수 있습니다 : 선택한 사용자가 거의 비어 (친구도없고 이벤트, 아니 사진을 ... 없음).
class BaseUser(db.Document, UserMixin):
username = db.StringField(max_length=64, unique=True, required=True)
email = db.EmailField(unique=True, required=True)
password = db.StringField(max_length=255, required=True)
active = db.BooleanField(default=True)
joined_on = db.DateTimeField(default=datetime.now())
roles = db.ListField(db.ReferenceField(Role), default=[])
class User(BaseUser)
# Identity
first_name = db.StringField(max_length=255)
last_name = db.StringField(max_length=255)
birthday = db.DateTimeField()
gender = db.StringField(max_length=1,choices=GENDER,default='N')
# Coordinates
address = db.StringField(max_length=255)
zip_code = db.IntField()
city = db.StringField(max_length=64)
region = db.StringField(max_length=64)
country = db.StringField(max_length=32)
phone_number = db.StringField(max_length=18)
# Community
description = db.StringField(max_length=1000)
activities = db.StringField(max_length=1000)
languages = db.ListField(db.StringField(max_length=32))
countries_visited = db.ListField(db.StringField(max_length=32))
countries_to_visit = db.ListField(db.StringField(max_length=32))
interests = db.ListField(db.ReferenceField('Tags'))
friends = db.ListField(db.ReferenceField('User'))
friend_requests = db.ListField(db.ReferenceField('User'))
pictures = db.ListField(db.ReferenceField('Picture'))
events = db.ListField(db.ReferenceField('Event'))
messages = db.ListField(db.ReferenceField('PrivateMessage'))
invitations = db.ListField(db.ReferenceField('Invitation'))
email_validated = db.BooleanField(default=False)
validation_date = db.DateTimeField()
저는 6Go 램과 1 vCore, 2,4GHz의 데비안 서버를 보유하고 있습니다. 나는 내 서버에 요청 중 TOP을 사용하는 경우 내가 (검색 요청에 대해) 더 후 378ms 소요 요청
가 표시되지 않는 MongoDB를 위해 로그를 확인하는 경우 : 나는 1 초 97 %에 참조 요청하는 동안 Python 용 CPU 사용.
파이썬 서버 출력을 확인하면 : 옵션 요청과 요청 가져 오기 사이에 4 초가 있습니다.