2013-05-14 2 views
2

나는 장고 응용 프로그램이 있습니다. 응용 프로그램은 정상적인 응용 프로그램입니다. 모든 것이 잘 돌아갑니다.redis 설치에 내 django 응용 프로그램 연결

지금부터 리더 보드를 구현하고 싶습니다. redis가 그것을하는 데 도움이되는 몇 가지 장소를 읽으십시오. 그리고 정말 대단합니다. 그래서 서버에 redis를 설치하고 구성했습니다.

나를 위해 사용자 프로필의 최소한의 표현은 다음과 같습니다이 평판 속성을 기반으로

class UserProfile(models.Model): 

    user = models.OneToOneField(User) 
    invited_friends = models.BooleanField(default=False) 
    filled_wishlist = models.BooleanField(default=False) 
    upvote = models.IntegerField() 
    downvote = models.IntegerField() 

    @property 
    def reputation(self): 
     return int(confidence_fixed(self.upvote, self.downvote)*100) 

, 내가 가치를 얻을. 이 모든 일은 PostgreSQL db 백엔드에서 일어나고 있습니다.

이제 내가하고 싶은 것은이 점수를 redis 키 값 저장소에 저장하고 리더 보드를 생성하는 것입니다. 리더를 구현하기위한 superawesome의 레디 스 라이브러리가있다 : https://github.com/agoragames/leaderboard-python

그래서 제 질문은, 내 레디 스 서버가 나는 레디 스 서버에 내 파이썬/장고 응용 프로그램을 연결하고 KV 저장소를 업데이트하려면 어떻게 XXX.XXX.XX.XX:6342 에서 말 실행 주어, 일단 숫자가 있으면 뷰를 가져 와서 어떻게 표시합니까?

답변

1

나는 당신이 leaderboard-python 라이브러리로 올바른 길을 가고 있다고 생각합니다.

먼저 리더 보드 - 파이썬을 사용하여 모델의 데이터를 redis로 옮기는 일회성 스크립트를 작성해야합니다.

# Create a new leaderboard 
reputation_lb = Leaderboard('reputation') 

for profile in UserProfile.objects.all(): 
    reputation.rank_member('user_%i' % profile.user.pk, profile.reputation) 

또한 leaderboard-python에서 평판을 검색하는 UserProfile 모델에 다른 속성을 만들어야합니다.

그런 다음 데이터베이스의 정보를 복제하고 평판 속성을 사용하여 순위표를 계속 사용하거나 redis에 저장된 점수를 단순히 증분/감소 시키면 점수를 업데이트 할 가능성이 높습니다.

leaderboard-python 라이브러리의 readme 파일은 매우 훌륭하며이를 빌드하는 데 필요한 모든 예제를 포함해야합니다.

reputation_lb = 리더 ('명성', 호스트 = "xyz.com : 미래 Google 직원

0

, 방법이 당신의 레디 스 서버에 연결하는 방법을 리더에게하는 것은 리더의 생성자에서 몇 인수를 지정하는 것입니다 ", port ="1234 ")

지원되는 옵션에 대한 자세한 내용은 여기에서 리더 보드의 생성자 코드를 참조하십시오. http://pydoc.net/Python/leaderboard/2.8.0/leaderboard/

관련 문제