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>
>>>
>>
--