From 5068641de02a057be05337c6cfb357920a13c22e Mon Sep 17 00:00:00 2001 From: Ilan Steemers Date: Wed, 24 Jun 2015 21:57:23 +0200 Subject: [PATCH] replaced JsonPickle with cPickle for signed packages --- .travis.yml | 2 +- django_q/core.py | 21 +++++++++++++-------- requirements.txt | 1 - setup.py | 2 +- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/.travis.yml b/.travis.yml index f2e9dc7..4d12a25 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,7 +14,7 @@ env: install: - pip install -q django==$DJANGO - pip install -r requirements.txt - - pip install pytest-django simplejson pytz coverage coveralls + - pip install pytest-django pytz coverage coveralls - python setup.py install script: diff --git a/django_q/core.py b/django_q/core.py index 9415e9f..0224547 100644 --- a/django_q/core.py +++ b/django_q/core.py @@ -6,8 +6,8 @@ from __future__ import absolute_import from builtins import dict from builtins import range from datetime import datetime -from django.utils.timezone import make_aware +from django.utils.timezone import make_aware from future import standard_library standard_library.install_aliases() @@ -23,8 +23,12 @@ import sys from time import sleep import gc +try: + import cPickle as pickle +except ImportError: + import pickle + # External -import jsonpickle import coloredlogs import redis @@ -55,6 +59,7 @@ def time_zone(value): return make_aware(value) return value + class Cluster(object): def __init__(self, list_key=Q_LIST): try: @@ -341,17 +346,17 @@ class SignedPackage(object): key=SECRET_KEY, salt='django_q.q', compress=compressed, - serializer=JSONPickleSerializer) + serializer=PickleSerializer) @staticmethod def loads(obj): return signing.loads(obj, key=SECRET_KEY, salt='django_q.q', - serializer=JSONPickleSerializer) + serializer=PickleSerializer) -class JSONPickleSerializer(object): +class PickleSerializer(object): """ Simple wrapper around JsonPickle for signing.dumps and signing.loads. @@ -359,11 +364,11 @@ class JSONPickleSerializer(object): @staticmethod def dumps(obj): - return jsonpickle.dumps(obj).encode('latin-1') + return pickle.dumps(obj) @staticmethod def loads(data): - return jsonpickle.loads(data.decode('latin-1')) + return pickle.loads(data) class Status(object): @@ -383,7 +388,7 @@ class Status(object): class Stat(Status): - def __init__(self, sentinel, message=None): + def __init__(self, sentinel, message=None): super(Stat, self).__init__(sentinel.parent_pid) if message: sentinel.status = message diff --git a/requirements.txt b/requirements.txt index fbca839..1ad3ac8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,5 @@ django-picklefield==0.3.1 Django==1.8.2 future==0.14.3 hiredis==0.2.0 -jsonpickle==0.9.2 redis==2.10.3 diff --git a/setup.py b/setup.py index 10f77c3..a0a56ec 100644 --- a/setup.py +++ b/setup.py @@ -35,7 +35,7 @@ setup( license='MIT', description='A multiprocessing task queue for Django', long_description=README, - install_requires=['django>=1.7', 'redis', 'coloredlogs', 'django-picklefield', 'jsonpickle', 'blessed'], + install_requires=['django>=1.7', 'redis', 'coloredlogs', 'django-picklefield', 'blessed'], cmdclass={'test': PyTest}, classifiers=[ 'Development Status :: 2 - PreAlpha',