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,response,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',Field('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,response,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(request, 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/main.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