Yes.
def __setattr__( self, name, value ):
if name == 'orig':
# force value to string & kill whitespace
value = unicode(value).strip()
###### Lots more cleaning is necessary
# clean off ending characters
value = value.rstrip(' ,;:)(')
# Ps 3:1; cf. => Ps 3:1
if value[-3:] == 'and': value = value.replace('and','')
if value[-2:] == 'cf': value = value.replace('cf','')
# clean off ending characters again
value = value.rstrip(' ,;:)(')
self.__dict__[ 'orig'] = value
From: [email protected]
[mailto:[email protected]] On Behalf Of timh
Sent: Tuesday, October 01, 2013 12:34 AM
To: [email protected]
Subject: [google-appengine] Re: __setattr__ and __getattr__ causing memcacahe
error in 1.8.5
You should show some code. Are you actually overriding __settattr__ and
__getattr__ in your models ?
T
On Tuesday, October 1, 2013 12:34:12 PM UTC+8, Brian Becker wrote:
After upgrading to 1.8.5 (from 1.8.1) I instantly had Internal Server Error
whenever my class was instantiated and placed in memcache:
daRef = oRefFinder()
memcache.set( 'theRef', daRef)
The last lines of the error trace says that the memcache.set command:
File "/base/data/home/apps/s~refindservice/1.370602298270267557/main.py",
line 117, in get
memcache.set('theRef' , daRef )
File
"/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/memcache/__init__.py",
line 763, in set
namespace=namespace)
File
"/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/memcache/__init__.py",
line 868, in _set_with_policy
time, '', namespace)
File
"/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/memcache/__init__.py",
line 947, in _set_multi_async_with_policy
stored_value, flags = _validate_encode_value(value, self._do_pickle)
File
"/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/memcache/__init__.py",
line 227, in _validate_encode_value
stored_value = do_pickle(value)
File
"/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/memcache/__init__.py",
line 392, in _do_pickle
pickler.dump(value)
TypeError: 'NoneType' object is not callable
I finally traced it to __setattr__ and __getattr__. If I go into my class and
change __setattr__ and __getattr__ methods to something else like tabooset and
tabooget -- Memcache error goes away. GRRRR.
If I delete all the content in my __setattr__ and just put "pass" -- it still
bombs -- so this is specific to the name of those methods.
First, what is going on?
Second, is there some other way I'm supposed to be setting and getting
attributes in my classes in GAE?
And yes, this was operating fine before I upgraded from 1.8.1 to 1.8.5.
Brian
--
You received this message because you are subscribed to a topic in the Google
Groups "Google App Engine" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/google-appengine/2d9UO1m0wV8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to
[email protected]<mailto:[email protected]>.
To post to this group, send email to
[email protected]<mailto:[email protected]>.
Visit this group at http://groups.google.com/group/google-appengine.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups
"Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-appengine.
For more options, visit https://groups.google.com/groups/opt_out.