mirror of https://github.com/rq/rq.git
Merge branch 'master' of github.com:nvie/rq
This commit is contained in:
commit
4a9bc6e76a
|
@ -441,7 +441,6 @@ class Job(object):
|
|||
|
||||
You can exclude serializing the `meta` dictionary by setting
|
||||
`include_meta=False`.
|
||||
|
||||
"""
|
||||
obj = {}
|
||||
obj['created_at'] = utcformat(self.created_at or utcnow())
|
||||
|
@ -458,7 +457,10 @@ class Job(object):
|
|||
if self.ended_at is not None:
|
||||
obj['ended_at'] = utcformat(self.ended_at)
|
||||
if self._result is not None:
|
||||
obj['result'] = dumps(self._result)
|
||||
try:
|
||||
obj['result'] = dumps(self._result)
|
||||
except:
|
||||
obj['result'] = 'Unpickleable return value'
|
||||
if self.exc_info is not None:
|
||||
obj['exc_info'] = self.exc_info
|
||||
if self.timeout is not None:
|
||||
|
|
|
@ -5,10 +5,17 @@ from __future__ import (absolute_import, division, print_function,
|
|||
from datetime import datetime
|
||||
import time
|
||||
|
||||
import sys
|
||||
is_py2 = sys.version[0] == '2'
|
||||
if is_py2:
|
||||
import Queue as queue
|
||||
else:
|
||||
import queue as queue
|
||||
|
||||
from tests import fixtures, RQTestCase
|
||||
from tests.helpers import strip_microseconds
|
||||
|
||||
from rq.compat import PY2, as_text
|
||||
from rq.compat import PY2
|
||||
from rq.exceptions import NoSuchJobError, UnpickleError
|
||||
from rq.job import Job, get_current_job, JobStatus, cancel_job, requeue_job
|
||||
from rq.queue import Queue, get_failed_queue
|
||||
|
@ -292,6 +299,13 @@ class TestJob(RQTestCase):
|
|||
serialized2.pop('meta')
|
||||
self.assertDictEqual(serialized, serialized2)
|
||||
|
||||
def test_unpickleable_result(self):
|
||||
"""Unpickleable job result doesn't crash job.to_dict()"""
|
||||
job = Job.create(func=fixtures.say_hello, args=('Lionel',))
|
||||
job._result = queue.Queue()
|
||||
data = job.to_dict()
|
||||
self.assertEqual(data['result'], 'Unpickleable return value')
|
||||
|
||||
def test_result_ttl_is_persisted(self):
|
||||
"""Ensure that job's result_ttl is set properly"""
|
||||
job = Job.create(func=fixtures.say_hello, args=('Lionel',), result_ttl=10)
|
||||
|
|
Loading…
Reference in New Issue