Google app engine 试图通过bulkuploader上载压缩数据(unicode)
我遇到了一个问题,上传到db.text的数据超过1MB,所以我使用zlib压缩了信息。默认情况下,Bulkloader不支持上载的unicode数据,因此我将源代码改为使用,而不是python内置的csv模块。我遇到的问题是Google App Engine的bulkload无法支持unicode字符(即使db.Text实体是unicode)Google app engine 试图通过bulkuploader上载压缩数据(unicode),google-app-engine,python-2.7,zlib,bulkloader,google-cloud-datastore,Google App Engine,Python 2.7,Zlib,Bulkloader,Google Cloud Datastore,我遇到了一个问题,上传到db.text的数据超过1MB,所以我使用zlib压缩了信息。默认情况下,Bulkloader不支持上载的unicode数据,因此我将源代码改为使用,而不是python内置的csv模块。我遇到的问题是Google App Engine的bulkload无法支持unicode字符(即使db.Text实体是unicode) 我知道,对于我的本地测试,我可以修改python文件以使用Unicodesv的模块,但这无助于解决在生产中使用GAE的数据存储的问题。有人知道这个问题的现
我知道,对于我的本地测试,我可以修改python文件以使用Unicodesv的模块,但这无助于解决在生产中使用GAE的数据存储的问题。有人知道这个问题的现有解决方案吗?在前几周解决了这个问题,您只需要对结果进行base64编码,这样您就不会遇到散货装载机大小增加30-50%的问题,但由于zlib已经将我的数据压缩到原始数据的10%,这还不算太糟糕
[ERROR ] [Thread-12] DataSourceThread:
Traceback (most recent call last):
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/bulkloader.py", line 1611, in run
self.PerformWork()
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/bulkloader.py", line 1730, in PerformWork
for item in content_gen.Batches():
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/bulkloader.py", line 542, in Batches
self._ReadRows(key_start, key_end)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/bulkloader.py", line 452, in _ReadRows
row = self.reader.next()
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/bulkload/csv_connector.py", line 219, in generate_import_record
for input_dict in self.dict_generator:
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/unicodecsv/__init__.py", line 188, in next
row = csv.DictReader.next(self)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/csv.py", line 108, in next
row = self.reader.next()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/unicodecsv/__init__.py", line 106, in next
row = self.reader.next()
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/bulkload/csv_connector.py", line 55, in utf8_recoder
for line in codecs.getreader(encoding)(stream):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/codecs.py", line 612, in next
line = self.readline()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/codecs.py", line 527, in readline
data = self.read(readsize, firstline=True)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/codecs.py", line 474, in read
newchars, decodedbytes = self.decode(data, self.errors)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x9c in position 29: invalid start byte