Added some config settings

Updated README
This commit is contained in:
Ilan Steemers
2015-06-17 19:14:20 +02:00
parent b28754de93
commit 2e81ba2858
4 changed files with 121 additions and 9 deletions
+16
View File
@@ -1,3 +1,5 @@
from multiprocessing import cpu_count
from django.apps import AppConfig
from django.conf import settings
@@ -6,6 +8,7 @@ class SessionAdminConfig(AppConfig):
name = 'django_q'
verbose_name = "Django Q"
"""
Sets the logging level for the app
"""
@@ -31,3 +34,16 @@ try:
SAVE_LIMIT = settings.Q_SAVE_LIMIT
except AttributeError:
SAVE_LIMIT = 100
try:
WORKERS = settings.Q_WORKERS
except AttributeError:
WORKERS = cpu_count()
"""
Turns compression on/off for task packages
"""
try:
COMPRESSED = settings.Q_COMPRESSED
except AttributeError:
COMPRESSED = False
+14 -6
View File
@@ -1,19 +1,20 @@
import importlib
import logging
import signal
from multiprocessing import cpu_count, Queue, Event, Process, current_process
from multiprocessing import Queue, Event, Process, current_process
import sys
from time import sleep
import jsonpickle
import coloredlogs
from django.core.signing import BadSignature
from django.utils import timezone
import redis
from django.core import signing
from django_q.apps import LOG_LEVEL, SECRET_KEY, SAVE_LIMIT
from django_q.apps import LOG_LEVEL, SECRET_KEY, SAVE_LIMIT, WORKERS, COMPRESSED
from django_q.humanhash import uuid
from django_q.models import Task, Success
@@ -35,7 +36,7 @@ class Cluster(object):
logger.error('Can not connect to Redis server')
return
self.running = True
self.pool_size = cpu_count()
self.pool_size = WORKERS
self.pool = []
self.task_queue = Queue()
self.done_queue = Queue()
@@ -198,19 +199,26 @@ def async(func, *args, **kwargs):
[name, func, args, kwargs, started, finished, result, success]
"""
name = uuid()[0]
pack = signing.dumps([name, func, args, kwargs, timezone.now()], key=SECRET_KEY, salt='django_q.q', compress=True,
pack = signing.dumps([name, func, args, kwargs, timezone.now()],
key=SECRET_KEY,
salt='django_q.q',
compress=COMPRESSED,
serializer=JSONPickleSerializer)
r.rpush(q_list, pack)
logger.debug('Pushed {}'.format(pack))
return name
class JSONPickleSerializer(object):
"""
Simple wrapper around jsonpickle to be used in signing.dumps and
signing.loads.
"""
def dumps(self, obj):
@staticmethod
def dumps(obj):
return jsonpickle.dumps(obj).encode('latin-1')
def loads(self, data):
@staticmethod
def loads(data):
return jsonpickle.loads(data.decode('latin-1'))