Abstract away from the concrete pickle implementation.

Choose cPickle, if available, for best performance.
main
Vincent Driessen 13 years ago
parent c4553f2a22
commit 9318825429

@ -1,6 +1,6 @@
import times import times
from uuid import uuid4 from uuid import uuid4
from pickle import loads, dumps from .pickle import loads, dumps, UnpicklingError
from .proxy import conn from .proxy import conn
from .exceptions import UnpickleError, NoSuchJobError from .exceptions import UnpickleError, NoSuchJobError
@ -15,7 +15,7 @@ def unpickle(pickled_string):
""" """
try: try:
obj = loads(pickled_string) obj = loads(pickled_string)
except StandardError: except (StandardError, UnpicklingError):
raise UnpickleError('Could not unpickle.', pickled_string) raise UnpickleError('Could not unpickle.', pickled_string)
return obj return obj

@ -0,0 +1,9 @@
from __future__ import absolute_import
try:
import cPickle as pickle
except ImportError:
import pickle # noqa
loads = pickle.loads
dumps = pickle.dumps
UnpicklingError = pickle.UnpicklingError

@ -8,7 +8,7 @@ import procname
import socket import socket
import signal import signal
import traceback import traceback
from pickle import dumps from .pickle import dumps
try: try:
from logbook import Logger from logbook import Logger
Logger = Logger # Does nothing except it shuts up pyflakes annoying error Logger = Logger # Does nothing except it shuts up pyflakes annoying error

@ -2,7 +2,7 @@ import times
from datetime import datetime from datetime import datetime
from tests import RQTestCase from tests import RQTestCase
from tests.helpers import strip_milliseconds from tests.helpers import strip_milliseconds
from pickle import loads from rq.pickle import loads
from rq.job import Job from rq.job import Job
from rq.exceptions import NoSuchJobError, UnpickleError from rq.exceptions import NoSuchJobError, UnpickleError

Loading…
Cancel
Save