from http://docs.python.org/library/os.html putenv should exist. just 
comment out the putenv and try it.  the hack to get _GetConnection not 
return an existing connection so it will create the correct connection 
needed for the 

get_serving_url call.



On Tuesday, August 21, 2012 11:20:50 PM UTC-7, Richard Arrano wrote:
>
> Frank,
> Thanks for the tip and for debugging that issue. I was completely lost. 
> However, when I try your workaround, despite that my IDE can see that os 
> has a function called putenv, for some reason App Engine does not. I get 
> this error trying it that way:
>  
>
> os.putenv(datastore._ENV_KEY, "")
> AttributeError: 'module' object has no attribute 'putenv'
>
>  
>
> Any idea on how to mitigate this? I have imported os but this is extremely 
> strange. I'm on 2.7.3 and am able to use putenv in my own interpreter.
>
>  
>
> Thanks,
>
> Richard
>
>
> On Tuesday, August 21, 2012 10:25:30 PM UTC-7, Frank VanZile wrote:
>
>> Here is my stack of the same problem.
>>
>>   File "C:\work\twist.2\server\backend\lib\images\image_helper.py", line 
>> 18, in
>> get_serving_url
>>     return images.get_serving_url(image_blob_key)
>>   File "C:\Program Files 
>> (x86)\Google\google_appengine\google\appengine\api\imag
>> es\__init__.py", line 1793, in get_serving_url
>>     return rpc.get_result()
>>   File "C:\Program Files 
>> (x86)\Google\google_appengine\google\appengine\api\apip
>> roxy_stub_map.py", line 604, in get_result
>>     return self.__get_result_hook(self)
>>   File "C:\Program Files 
>> (x86)\Google\google_appengine\google\appengine\api\imag
>> es\__init__.py", line 1889, in get_serving_url_hook
>>     rpc.check_success()
>>   File "C:\Program Files 
>> (x86)\Google\google_appengine\google\appengine\api\apip
>> roxy_stub_map.py", line 570, in check_success
>>     self.__rpc.CheckSuccess()
>>   File "C:\Program Files 
>> (x86)\Google\google_appengine\google\appengine\api\apip
>> roxy_rpc.py", line 156, in _WaitImpl
>>     self.request, self.response)
>>   File "C:\Program Files 
>> (x86)\Google\google_appengine\google\appengine\api\apip
>> roxy_stub.py", line 160, in MakeSyncCall
>>     method(request, response)
>>   File "C:\Program Files 
>> (x86)\Google\google_appengine\google\appengine\api\imag
>> es\images_stub.py", line 296, in _Dynamic_GetUrlBase
>>     datastore.Put(entity_info)
>>   File "C:\Program Files 
>> (x86)\Google\google_appengine\google\appengine\api\data
>> store.py", line 579, in Put
>>     return PutAsync(entities, **kwargs).get_result()
>>   File "C:\Program Files 
>> (x86)\Google\google_appengine\google\appengine\api\data
>> store.py", line 556, in PutAsync
>>     return _GetConnection().async_put(config, entities, local_extra_hook)
>>   File "C:\Program Files 
>> (x86)\Google\google_appengine\google\appengine\datastor
>> e\datastore_rpc.py", line 1534, in async_put
>>     pbs = [self.__adapter.entity_to_pb(entity) for entity in entities]
>>   File "C:\work\twist.2\server\backend\lib\external\ndb\model.py", line 
>> 561, in
>> entity_to_pb
>>     pb = ent._to_pb()
>> AttributeError: 'Entity' object has no attribute '_to_pb'
>>
>>
>> i have ran into the same type of problem before.  the problem is the sdk 
>> tries to cache the datastore_rpc connection.  see _GetConnection in 
>> datastore.py
>>
>> def _GetConnection():
>>   """Retrieve a datastore connection local to the thread."""
>>
>>   connection = None
>>   if os.getenv(_ENV_KEY):
>>     try:
>>       connection = _thread_local.connection
>>     except AttributeError:
>>       pass
>>   if connection is None:
>>     connection = datastore_rpc.Connection(adapter=_adapter)
>>     _SetConnection(connection)
>>   return connection
>>
>> an incorrect datastore connection is being used for that call from this 
>> connection cache.
>>
>> you can hack around it by adding this before the get_serving_url call.  
>>
>>             import os
>>             from google.appengine.api import datastore
>>             os.environ[datastore._ENV_KEY] = ''
>>             os.putenv(datastore._ENV_KEY, '')
>>             datastore._thread_local.connection = None
>>
>>
>>
>> On Tuesday, August 21, 2012 6:59:25 PM UTC-7, Takashi Matsuo (Google) 
>> wrote:
>>>
>>>
>>> Can you show me the whole stacktrace?
>>> What is your app-id?
>>>
>>>
>>> On Wed, Aug 22, 2012 at 7:14 AM, Richard Arrano <[email protected]>wrote:
>>>
>>>> Hello,
>>>> I have a function that takes a user image upload and saves both the 
>>>> blob key and a serving URL. After upgrading to 1.7.1, I now get an error 
>>>> trying to save the updated entity to the datastore. The property pictures 
>>>> is an ndb.StringProperty(repeated=True, indexed=False) and the property 
>>>> picture_keys is an ndb.BlobKeyProperty(repeated=True) where the former 
>>>> will 
>>>> hold the image serving URLs for the blob keys in the latter. In a 
>>>> transaction, I read the uploaded file and generate a serving URL and save 
>>>> the blob key and the serving URL. This worked last night before upgrading 
>>>> to 1.7.1, but now I get an error on:
>>>>  
>>>>
>>>>     article.pictures.append(get_serving_url(blob_info.key()))
>>>>
>>>>  
>>>>
>>>> AttributeError: 'Entity' object has no attribute '_to_pb'
>>>>  
>>>> Without fail on the development server, this line now generates that 
>>>> error. Was there a change to the API and I should be doing something 
>>>> differently? If so, what?
>>>>  
>>>> Thanks,
>>>> Richard
>>>>  
>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "Google App Engine" group.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msg/google-appengine/-/Bg4zC34iDOcJ.
>>>> To post to this group, send email to [email protected].
>>>> To unsubscribe from this group, send email to 
>>>> [email protected].
>>>> For more options, visit this group at 
>>>> http://groups.google.com/group/google-appengine?hl=en.
>>>>
>>>
>>>
>>>
>>> -- 
>>> Takashi Matsuo | Developers Advocate | [email protected]
>>>
>>>  

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/8BNUEIqqHx0J.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to