Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Datetime serialization issue on reservation notification email celery task #1136

Closed
jwalgran opened this issue Apr 13, 2015 · 2 comments
Closed

Comments

@jwalgran
Copy link
Member

I noticed this regression while testing updates to reservation PDF generation.

 Task apps.mail.tasks.notify_reservation_confirmed[b2cd993c-421d-4a9f-8b6b-d1ce951f52ba] raised unexpected: EncodeError(TypeError('datetime.datetime(2015, 4, 13, 15, 39, 31, 390209, tzinfo=<UTC>) is not JSON serializable',),)
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/celery/app/trace.py", line 283, in trace_task
    uuid, retval, SUCCESS, request=task_request,
  File "/usr/local/lib/python2.7/dist-packages/celery/backends/base.py", line 256, in store_result
    request=request, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/celery/backends/base.py", line 486, in _store_result
    self.set(self.get_key_for_task(task_id), self.encode(meta))
  File "/usr/local/lib/python2.7/dist-packages/celery/backends/base.py", line 182, in encode
    _, _, payload = dumps(data, serializer=self.serializer)
  File "/usr/local/lib/python2.7/dist-packages/kombu/serialization.py", line 164, in dumps
    payload = encoder(data)
  File "/usr/lib/python2.7/contextlib.py", line 35, in __exit__
    self.gen.throw(type, value, traceback)
  File "/usr/local/lib/python2.7/dist-packages/kombu/serialization.py", line 59, in _reraise_errors
    reraise(wrapper, wrapper(exc), sys.exc_info()[2])
  File "/usr/local/lib/python2.7/dist-packages/kombu/serialization.py", line 55, in _reraise_errors
    yield
  File "/usr/local/lib/python2.7/dist-packages/kombu/serialization.py", line 164, in dumps
    payload = encoder(data)
  File "/usr/local/lib/python2.7/dist-packages/anyjson/__init__.py", line 141, in dumps
    return implementation.dumps(value)
  File "/usr/local/lib/python2.7/dist-packages/anyjson/__init__.py", line 87, in dumps
    return self._encode(data)
  File "/usr/lib/python2.7/dist-packages/simplejson/__init__.py", line 354, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python2.7/dist-packages/simplejson/encoder.py", line 262, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python2.7/dist-packages/simplejson/encoder.py", line 340, in iterencode
    return _iterencode(o, 0)
  File "/usr/lib/python2.7/dist-packages/simplejson/encoder.py", line 239, in default
    raise TypeError(repr(o) + " is not JSON serializable")
EncodeError: datetime.datetime(2015, 4, 13, 15, 39, 31, 390209, tzinfo=<UTC>) is not JSON serializable
@maurizi
Copy link
Contributor

maurizi commented Apr 13, 2015

We may be able to fix this by switching to a different Celery serialization format, like pickle

@kdeloach
Copy link
Contributor

Looks like this error occurs after successfully sending emails, which would explain why sending email works on staging.

kdeloach pushed a commit to kdeloach/nyc-trees that referenced this issue Apr 15, 2015
This datetime value was used for logging but can't be serialized
by celery. Since the celery logs already contain timestamps we should
be able to remove this without losing context.

Fixes azavea#1136
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants