Here is a patch that restores redis3 sessions for my system.  I'm using the 
latest web2py 2.21.1 and redis stable 6.0.9 (via brew)

*diff --git a/gluon/contrib/redis_session.py 
b/gluon/contrib/redis_session.py*
*index 6413b52a..73c20422 100644*
*--- a/gluon/contrib/redis_session.py*
*+++ b/gluon/contrib/redis_session.py*
*@@ -13,7 +13,7 @@ from gluon import current*
* from gluon.storage import Storage*
* from gluon.contrib.redis_utils import acquire_lock, release_lock*
* from gluon.contrib.redis_utils import register_release_lock*
*-from gluon._compat import to_native*
*+from gluon._compat import to_native,to_bytes*
* from datetime import datetime*
 
* logger = logging.getLogger("web2py.session.redis")*
*@@ -208,7 +208,7 @@ class MockQuery(object):*
*             if rtn:*
*                 if self.unique_key:*
*                     # make sure the id and unique_key are correct*
*-                    if rtn['unique_key'] == to_native(self.unique_key):*
*+                    if rtn['unique_key'] == to_bytes(self.unique_key):*
*                         rtn['update_record'] = self.update  # update 
record support*
*                     else:*
*                         rtn = None*


Does anyone know how to make code blocks in this new stupid Google Groups 
window?  Sheesh.  One step sideways and three steps back.

-- Joe

On Wednesday, September 11, 2019 at 12:11:13 AM UTC-5 Massimo Di Pierro 
wrote:

> :-)
>
>
> On Monday, 9 September 2019 22:40:36 UTC-7, Joe Barnhart wrote:
>>
>> ROFL!  I don't think it's quite ready for my prime-time cash-producing 
>> website yet.  I'll definitely keep an eye on it and start playing around 
>> with it.  I need to keep you from making any decisions I don't like, after 
>> all!
>>
>> -- Joe
>>
>>
>> On Monday, September 9, 2019 at 8:48:54 PM UTC-7, Massimo Di Pierro wrote:
>>>
>>> py4web supports redis. Just saying. ;-)
>>>
>>> On Monday, 9 September 2019 09:27:20 UTC-7, Joe Barnhart wrote:
>>>>
>>>> I sure wish somebody could fix this.  It's a real bottleneck to Python3 
>>>> adoption for my site.  I tried using local storage for sessions but the 
>>>> limitation on data size makes it a no-go for my site.  If I can't use 
>>>> redis 
>>>> I'll have to drop back to storing sessions in files and that really sucks 
>>>> for a larger deployment.
>>>>
>>>> -- Joe
>>>>
>>>> On Monday, April 1, 2019 at 11:31:10 PM UTC-7, Massimo Di Pierro wrote:
>>>>>
>>>>> we could change True/False with 1/0 but a better approach would be to 
>>>>> remove the value within the redis adapter. The value of locked does not 
>>>>> do 
>>>>> anything anyway on redis since it is not a relational database with 
>>>>> transactions.
>>>>>
>>>>> On Sunday, 31 March 2019 10:19:20 UTC-7, Jim S wrote:
>>>>>>
>>>>>> I changed the following in gluon/globals.py and mine is working now.  
>>>>>> But, I'm unclear on how to test to see if it is handling the locking 
>>>>>> properly:
>>>>>>
>>>>>> dd = dict(locked=False,
>>>>>>           client_ip=response.session_client,
>>>>>>           modified_datetime=request.now,
>>>>>>           session_data=session_pickled,
>>>>>>           unique_key=unique_key)
>>>>>>
>>>>>> to 
>>>>>>
>>>>>> dd = dict(locked='False',
>>>>>>           client_ip=response.session_client,
>>>>>>           modified_datetime=str(request.now),
>>>>>>           session_data=session_pickled,
>>>>>>           unique_key=unique_key)
>>>>>>
>>>>>> This makes all my stuff work (I'm still on Python 2.7 but I think the 
>>>>>> problem has to do with the python redis client moving to version 3).
>>>>>>
>>>>>> Leonel - I think this relates back to an issue you commented on late 
>>>>>> last year.   
>>>>>> https://groups.google.com/forum/?pli=1#!searchin/web2py/redis%7Csort:date/web2py/PdquGF_9a2E/6VJpLqsnBgAJ
>>>>>>
>>>>>> At that time I just continued using python redis 2.10.6.  But, can't 
>>>>>> do that forever.  Anyone able to test or improve upon the change I made 
>>>>>> above?  Like I said, it works for me, but I don't know how to see if I'm 
>>>>>> causing any other unforeseen damage.
>>>>>>
>>>>>> -Jim
>>>>>>
>>>>>> On Friday, March 29, 2019 at 7:49:03 PM UTC-5, Joe Barnhart wrote:
>>>>>>>
>>>>>>> Hi Leonel --
>>>>>>>
>>>>>>> My brain refuses to put together the words "session locked field". 
>>>>>>>  I understand the part of pickle smashing the values and encoding them 
>>>>>>> as 
>>>>>>> one string.  The bool has something to do with session locking?  
>>>>>>>
>>>>>>> I've only looked at the web2py redis code in the most scant way as I 
>>>>>>> wasn't planning to become a redis expert.  Sessions in redis could be 
>>>>>>> important to me, tho, so I may need to set aside some time to dig into 
>>>>>>> it. 
>>>>>>>  (Storing sessions in cookies has been problematic due to the limited 
>>>>>>> space 
>>>>>>> for cookies in browsers.)
>>>>>>>
>>>>>>> -- Joe
>>>>>>>
>>>>>>>
>>>>>>> On Wednesday, March 27, 2019 at 4:49:25 PM UTC-7, Leonel Câmara 
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> It's not your values Joe, pickle serializes them as a string so 
>>>>>>>> they would be fine. It's web2py session locked field which is True or 
>>>>>>>> False. It's probably easy to fix this in redis_session.py
>>>>>>>>
>>>>>>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/3d8b3236-9f4e-408b-9dac-9b1381ae0fean%40googlegroups.com.

Reply via email to