2010-10-07 10 views
0

Я пишу легкий кометный сервер на базе Tornado. Я хотел бы сохранить объект «self» в redis для поддержания состояния. Будет ли это работать?Сессия Торнадо в Redis

Для начала, я не могу даже сериализации самостоятельно хранить в Redis ..

Это ошибка

File "sessionsupport.py", line 27, in get 
    this = cPickle.dumps(self,1) 
    File "/home/test/lib/python2.7/copy_reg.py", line 70, in _reduce_ex 
    raise TypeError, "can't pickle %s objects" % base.__name__ 
TypeError: can't pickle instancemethod objects 

какие-либо предложения о том, как я бы это сделать?

+0

«Я» объект из какого контекста? Экземпляр RequestHandler? –

ответ

2

Я не уверен, что объект self ссылается на экземпляр RequestHandler, или, может быть, на какой-то тип Session экземпляр, который у вас есть. Какой бы он ни был, вы, вероятно, захотите преобразовать свой объект в диктофон до травления и сохранения в redis. По крайней мере, это то, что я делаю с MongoDB. Мое Tornado сессия:

  • Are dict s, которые содержат какие-либо данные, которые я хочу, чтобы сохраняться в течение сессий пользователей
  • присвоен идентификатор, который:
    • Сохраненного вместе с Dict в моем датасторе (Redis или MongoDB)
    • Хранится в куки пользователя
+0

Да, это относится к RequestHandler, который указывает на конкретного клиента. Как вы это делаете от Tornado? – Arenstar