faster update_statistics
This commit is contained in:
parent
82fa80a4f9
commit
2644edb971
1 changed files with 8 additions and 5 deletions
|
@ -2,6 +2,7 @@
|
||||||
# vi:si:et:sw=4:sts=4:ts=4
|
# vi:si:et:sw=4:sts=4:ts=4
|
||||||
import json
|
import json
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
from itertools import izip_longest
|
||||||
|
|
||||||
from celery.task import task, periodic_task
|
from celery.task import task, periodic_task
|
||||||
|
|
||||||
|
@ -14,14 +15,16 @@ def cronjob(**kwargs):
|
||||||
update_statistics()
|
update_statistics()
|
||||||
|
|
||||||
def update_statistics():
|
def update_statistics():
|
||||||
|
def chunker(iterable, chunksize, filler):
|
||||||
|
return izip_longest(*[iter(iterable)]*chunksize, fillvalue=filler)
|
||||||
|
|
||||||
stats = Statistics()
|
stats = Statistics()
|
||||||
ids = [i['session_key'] for i in models.SessionData.objects.all().values('session_key')]
|
ids = [i['session_key'] for i in models.SessionData.objects.all().values('session_key')]
|
||||||
for id in ids:
|
|
||||||
try:
|
for chunk in chunker(ids, 100, None):
|
||||||
u = models.SessionData.objects.get(pk=id)
|
chunk = filter(None, chunk)
|
||||||
|
for u in models.SessionData.objects.filter(pk__in=chunk):
|
||||||
stats.add(u.json())
|
stats.add(u.json())
|
||||||
except:
|
|
||||||
pass
|
|
||||||
Settings.set('statistics', stats)
|
Settings.set('statistics', stats)
|
||||||
|
|
||||||
@task(ignore_results=True, queue='default')
|
@task(ignore_results=True, queue='default')
|
||||||
|
|
Loading…
Reference in a new issue