What I wanted to do is when there is no memcache installed, or something
happens to it while running, the application should switch automatically to
db sessions, rather than just throw an error.

The code I got bellow re-creates the problem, but if I add an extra if
notsession
: session.connect(request, response, db=db) it works fine for my purposes.

Sorry that I'm explaining this upside-down :)


On Tue, Dec 25, 2012 at 1:23 AM, Massimo Di Pierro <
massimo.dipie...@gmail.com> wrote:

> I am not sure I fully understand the problem.
>
> One issue is that you cannot do:
>
> try:
>       redirect(url)
> except:
>       something
>
> you have to do
>
> try:
>       redirect(url)
> except HTTP, e:
>       raise e
> except:
>       db.rollback() # maybe
>       something
>
> because a redirect will raise HTTP which extends Exception. You need to
> re-reise it for it to work.
>
> Massimo
>
> On Tuesday, 25 December 2012 00:01:19 UTC-6, Adi wrote:
>
>> Thanks Massimo. The exception works fine, but the problem raised when
>> calling a grid. Didn't realize it's not possible to connect to another
>> session within the "except" segment. Seems that code has to be outside.
>> Still learning python here :)
>>
>>
>> db.py
>> -----
>> try:
>>     from gluon.contrib.memcache import MemcacheClient
>>     memcache_servers = ['127.0.0.1:11211']
>>     cache.memcache = MemcacheClient(request, memcache_servers)
>>     cache.ram = cache.disk = cache.memcache
>>     from gluon.contrib.memdb import MEMDB
>>     session.connect(request,respon**se,db=MEMDB(cache.memcache))
>> except Exception:
>>     session.connect(request, response, db=db) # doesn't work
>>     pass
>>
>> # had to do it this way, and then all works as expected
>> if not session:
>>     session.connect(request, response, db=db)
>>
>> db.define_table('mytable',Fiel**d('myfield','string'))
>>
>>
>> default.py
>> ----------
>> def gr():
>>     q = (db.mytable.id>0)
>>     grid=SQLFORM.grid(q)
>>     return dict()
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> On Monday, December 24, 2012 5:11:17 PM UTC-5, Massimo Di Pierro wrote:
>>
>>> Can you try replace:
>>>
>>> except:
>>>
>>> with
>>>
>>> except Exception:
>>>
>>> On Monday, 24 December 2012 10:04:08 UTC-6, Adi wrote:
>>>
>>>> Tried catching the exception when memcache is not available to switch
>>>> to db caching, but getting an excepting.
>>>>
>>>> Should it be possible to catch this exception, ignore it and continue
>>>> running?
>>>>
>>>> Thanks,
>>>> Adnan
>>>>
>>>>
>>>> try:
>>>>     from gluon.contrib.memcache import MemcacheClient
>>>>     memcache_servers = ['127.0.0.1:11211']
>>>>     cache.memcache = MemcacheClient(request, memcache_servers)
>>>>     cache.ram = cache.disk = cache.memcache
>>>>     from gluon.contrib.memdb import MEMDB
>>>>     session.connect(request,respon**se,db=MEMDB(cache.memcache))
>>>> except:
>>>>     sys.exc_clear()
>>>>     session.connect(request, response, db=db)
>>>>     pass
>>>>
>>>>
>>>>
>>>> Traceback (most recent call last):
>>>>  File "/Users/adnan/web2py24/gluon/**main.py", line 557, in wsgibase
>>>>  session._try_store_in_db(requ**est, response)
>>>>  File "/Users/adnan/web2py24/gluon/**globals.py", line 739, 
>>>> in_try_store_in_db
>>>>  record_id = table.insert(**dd)
>>>>  File "/Users/adnan/web2py24/gluon/**contrib/memdb.py", line 256, ininsert
>>>>  id = self._create_id()
>>>>  File "/Users/adnan/web2py24/gluon/**contrib/memdb.py", line 296, 
>>>> in_create_id
>>>>  raise Exception('cannot set memcache')
>>>> Exception: cannot set memcache
>>>>
>>>>
>>>>
>>>> Frames
>>>>
>>>>
>>>>
>>>>  File /Users/adnan/web2py24/gluon/ma**in.py in wsgibase at line 557
>>>> code arguments variables
>>>>
>>>>
>>>>
>>>>  File /Users</spa...
>>>> Show 
>>>> original<https://groups.google.com/group/web2py/msg/154fffb31c2a7321?dmode=source&output=gplain&noredirect>
>>>>
>>>  --
>
>
>
>

-- 



Reply via email to