Attempt to remove servers without updates, after a week.

This commit is contained in:
A. Svensson 2015-02-23 20:07:50 +01:00
parent 023916152a
commit 63749b71ca
3 changed files with 36 additions and 1 deletions

View File

@ -4,6 +4,7 @@ import re
import time
from django.core.management.base import BaseCommand
from django.utils import timezone
from gameservers.models import Server, PlayerHistory
@ -93,7 +94,7 @@ class Command(BaseCommand):
#parser.url = './dump.html' # Use a local file instead when testing
servers = parser.run()
history = PlayerHistory()
now = time.time()
now = time.mktime(timezone.now().timetuple())
servers_handled = []
for data in servers:
@ -118,3 +119,5 @@ class Command(BaseCommand):
history.add_point(server, now, data['player_count'])
history.trim_points(server)
Server.remove_old_servers()

View File

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('gameservers', '0008_auto_20150223_1713'),
]
operations = [
migrations.AddField(
model_name='server',
name='last_updated',
field=models.DateTimeField(default=django.utils.timezone.now, auto_now=True),
preserve_default=True,
),
]

View File

@ -2,6 +2,7 @@
import datetime
from django.db import models
from django.utils import timezone
import redis
@ -11,6 +12,7 @@ class Server(models.Model):
game_url = models.URLField()
site_url = models.URLField(blank=True)
current_players = models.PositiveIntegerField(default=0, editable=False)
last_updated = models.DateTimeField(auto_now=True, default=timezone.now)
class Meta:
ordering = ['-current_players', 'title']
@ -18,6 +20,15 @@ class Server(models.Model):
def __str__(self):
return self.title
@staticmethod
def remove_old_servers():
now = timezone.now()
for server in Server.objects.all():
delta = now - server.last_updated
if delta.days >= 7:
del server
class PlayerHistory(object):
def __init__(self, redis_settings=dict(host='localhost', port=6379, db=0)):