Bläddra i källkod

Deserialize json string prior to inclusion in CouchDB doc

CouchDB interface takes care of deserialization prior to
insertion/update, so deserializing the celery result beforehand leads
to a stringified json blob within the resulting json document.
Andrew Stewart 8 år sedan
förälder
incheckning
ccf65f80d7
1 ändrade filer med 7 tillägg och 2 borttagningar
  1. 7 2
      celery/backends/couchdb.py

+ 7 - 2
celery/backends/couchdb.py

@@ -8,6 +8,8 @@
 """
 from __future__ import absolute_import, unicode_literals
 
+import json
+
 try:
     import pycouchdb
 except ImportError:
@@ -91,13 +93,16 @@ class CouchBackend(KeyValueStoreBackend):
             return None
 
     def set(self, key, value):
-        data = {'_id': key, 'value': value}
+        # data = {'_id': key, 'value': value}
+        data = json.loads(value)
+        data['_id'] = key
         try:
             self.connection.save(data)
         except pycouchdb.exceptions.Conflict:
             # document already exists, update it
             data = self.connection.get(key)
-            data['value'] = value
+            # data['value'] = value
+            data.update(json.loads(value))            
             self.connection.save(data)
 
     def mget(self, keys):