From 5768d1ebcfec46e564c8b420773d911c243327ff Mon Sep 17 00:00:00 2001 From: Tyson Clugg Date: Thu, 23 Apr 2015 09:41:49 +1000 Subject: [PATCH] Fix non-threadsafe failure in serializer - now using thread local serializer instance. --- dddp/msg.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/dddp/msg.py b/dddp/msg.py index 3b942d6..9e0a3e4 100644 --- a/dddp/msg.py +++ b/dddp/msg.py @@ -1,15 +1,17 @@ """Django DDP utils for DDP messaging.""" -import collections +from dddp import THREAD_LOCAL as this from django.core.serializers import get_serializer -_SERIALIZER = None + +def serializer_factory(): + """Make a new DDP serializer.""" + return get_serializer('ddp')() + def obj_change_as_msg(obj, msg): """Generate a DDP msg for obj with specified msg type.""" - global _SERIALIZER - if _SERIALIZER is None: - _SERIALIZER = get_serializer('ddp')() - data = _SERIALIZER.serialize([obj])[0] + serializer = this.get('serializer', serializer_factory) + data = serializer.serialize([obj])[0] name = data['model'] # cast ID as string