Cache server time queries

This commit is contained in:
Trever Fischer
2012-03-06 18:25:48 -05:00
parent 4f4cd399b8
commit 245f8d139b

View File

@@ -1,4 +1,5 @@
from piston.handler import AnonymousBaseHandler, BaseHandler
from django.core.cache import cache
from minecraft.models import MinecraftProfile
from local.models import Quote
from minecraft.models import MOTD, Server
@@ -43,9 +44,14 @@ class ServerHandler(AnonymousBaseHandler):
def read(self, request, hostname):
s = Server.objects.get(hostname__exact=hostname)
try:
dynMapJS = json.load(urlopen("http://%s/map/up/world/world/0"%(hostname)))
serverTime = dynMapJS["servertime"]
except Exception, e:
serverTime = -1
return {"hostname":hostname, "port":s.port, "players": map(lambda x:x.mc_username, s.online_players()), "time":serverTime, "rules": s.ruleset.split('\n')}
serverTime = cache.get('minecraftServerTime-%s:%s'%(s.hostname, s.port))
playerList = []
if serverTime is None:
try:
dynMapJS = json.load(urlopen("http://%s/map/up/world/world/0"%(hostname)))
serverTime = dynMapJS["servertime"]
playerList = dynMapJS["players"]
cache.set('minecraftServerTime-%s:%s'%(s.hostname, s.port), serverTime, 120)
except Exception, e:
serverTime = -1
return {"hostname":hostname, "port":s.port, "players": playerList, "time":serverTime, "rules": s.ruleset.split('\n')}