我從這一行代碼在我的GAE Python應用程序得到一個PicklingError:PicklingError:不能鹹菜<class ...>:這是不一樣的對象......在GAE
deferred.defer(email_voters_begin, ekey, voter_list)
三個參數:。
- email_voters_begin - 甲Python函數,例如,在0x1035d4488
- EKEY功能email_voters_begin - A鍵予定義的實體,例如,打印爲agdvcGF2b3Rlcg4LEghFbGVjdGlvbhgCDA
- voter_list - 對象的列表我所定義,例如,[在0x103d3d310 models.Voter對象,...]
當此行執行作爲我的測試部分(與WebTest的和nosegae),I出現以下錯誤:
Traceback (most recent call last):
[...]
File "/Users/joneill/OpenSTV/OpenSTV/trunk/OpaVote-HR/tasks.py", line 29, in init_voters_and_send_email
deferred.defer(email_voters_begin, ekey, voter_list)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/deferred/deferred.py", line 249, in defer
pickled = serialize(obj, *args, **kwargs)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/deferred/deferred.py", line 221, in serialize
return pickle.dumps(curried, protocol=pickle.HIGHEST_PROTOCOL)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1374, in dumps
Pickler(file, protocol).dump(obj)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 224, in dump
self.save(obj)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
[...]
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 396, in save_reduce
save(cls)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 753, in save_global
(obj, module, name))
PicklingError: Can't pickle <class 'google.appengine.ext.blobstore.blobstore.BlobInfo'>: it's not the same object as google.appengine.ext.blobstore.blobstore.BlobInfo
注意,Voter
實體deferred.defer()
通過沒有BlobReference
屬性,但該Voter
實體確實有ReferenceProperty
到確實有BlobReference
財產另一個實體。我不認爲有任何BlobInfo對象會成爲泡菜的一部分,但錯誤表明其中包含了一個對象。
當我使用dev服務器從瀏覽器窗口運行相同的代碼時,不會發生此錯誤。
我難以理解如何調試此任何想法將不勝感激。