#python #node.js #pylons #beaker
#python #node.js #пилоны #мензурка
Вопрос:
Необходимо прочитать данные сеанса пилонов (просто прочитать, а не записать) в node.js
Как только я декодирую base64, у меня остается строка, содержащая сериализованный объект Python, который сложно разобрать node.js
Как я могу заставить стакан сериализовать в JSON вместо этого? Поскольку это намного проще для node.js для обработки.
Ответ №1:
мне пришлось заглянуть внутрь стакана, чтобы найти то, что вы называете «сериализованными строками Python», — это огурцы python.
я не думаю, что потребуется больше нескольких строк, чтобы изменить его, чтобы использовать json для хранения dict.
вот исправление против https://bitbucket.org/bbangert/beaker/src/257f147861c8:
diff -r 257f147861c8 beaker/session.py
--- a/beaker/session.py Mon Apr 18 11:38:53 2011 -0400
b/beaker/session.py Sat Apr 30 14:19:12 2011 -0400
@@ -489,10 489,10 @@
nonce = b64encode(os.urandom(40))[:8]
encrypt_key = crypto.generateCryptoKeys(self.encrypt_key,
self.validate_key nonce, 1)
- data = util.pickle.dumps(self.copy(), 2)
data = util.json.dumps(self.copy())
return nonce b64encode(crypto.aesEncrypt(data, encrypt_key))
else:
- data = util.pickle.dumps(self.copy(), 2)
data = util.json.dumps(self.copy())
return b64encode(data)
def _decrypt_data(self):
@@ -504,10 504,10 @@
self.validate_key nonce, 1)
payload = b64decode(self.cookie[self.key].value[8:])
data = crypto.aesDecrypt(payload, encrypt_key)
- return util.pickle.loads(data)
return util.json.loads(data)
else:
data = b64decode(self.cookie[self.key].value)
- return util.pickle.loads(data)
return util.json.loads(data)
def save(self, accessed_only=False):
"""Saves the data for this session to persistent storage"""
diff -r 257f147861c8 beaker/util.py
--- a/beaker/util.py Mon Apr 18 11:38:53 2011 -0400
b/beaker/util.py Sat Apr 30 14:19:12 2011 -0400
@@ -24,6 24,11 @@
import pickle
else:
import cPickle as pickle
try:
import json
except ImportError:
import simplejson as json
from beaker.converters import asbool
from beaker import exceptions
Комментарии:
1. 1 за то, что перешел к исходному коду, исправил проблему и запустил патч.