Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 试图通过bulkuploader上载压缩数据(unicode)_Google App Engine_Python 2.7_Zlib_Bulkloader_Google Cloud Datastore - Fatal编程技术网

Google app engine 试图通过bulkuploader上载压缩数据(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的数据存储的问题。有人知道这个问题的现

我遇到了一个问题,上传到db.text的数据超过1MB,所以我使用zlib压缩了信息。默认情况下,Bulkloader不支持上载的unicode数据,因此我将源代码改为使用,而不是python内置的csv模块。我遇到的问题是Google App Engine的bulkload无法支持unicode字符(即使db.Text实体是unicode)


我知道,对于我的本地测试,我可以修改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