- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试检查我的应用引擎备份文件,以确定何时发生数据损坏。我使用 gsutil 找到并下载文件:
gsutil ls -l gs://my_backup/ > my_backup.txt
gsutil cp gs://my_backup/LongAlphaString.Mymodel.backup_info file://1.backup_info
然后我创建了一个小的 python 程序,尝试读取文件并使用应用引擎库解析它。
#!/usr/bin/python
APPENGINE_PATH='/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/'
ADDITIONAL_LIBS = [
'lib/yaml/lib'
]
import sys
sys.path.append(APPENGINE_PATH)
for l in ADDITIONAL_LIBS:
sys.path.append(APPENGINE_PATH+l)
import logging
from google.appengine.api.files import records
import cStringIO
def parse_backup_info_file(content):
"""Returns entities iterator from a backup_info file content."""
reader = records.RecordsReader(cStringIO.StringIO(content))
version = reader.read()
if version != '1':
raise IOError('Unsupported version')
return (datastore.Entity.FromPb(record) for record in reader)
INPUT_FILE_NAME='1.backup_info'
f=open(INPUT_FILE_NAME, 'rb')
f.seek(0)
content=f.read()
records = parse_backup_info_file(content)
for r in records:
logging.info(r)
f.close()
parse_backup_info_file
的代码是从 backup_handler.py
当我运行程序时,我得到以下输出:
./view_record.py
Traceback (most recent call last):
File "./view_record.py", line 30, in <module>
records = parse_backup_info_file(content)
File "./view_record.py", line 19, in parse_backup_info_file
version = reader.read()
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/files/records.py", line 335, in read
(chunk, record_type) = self.__try_read_record()
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/files/records.py", line 307, in __try_read_record
(length, len(data)))
EOFError: Not enough data read. Expected: 24898 but got 2112
我尝试了六个不同的 backup_info 文件,它们都显示相同的错误(具有不同的数字。)我注意到它们都具有相同的预期长度: 当我进行该观察时,我正在审查同一模型的不同版本,当我查看其他模块的备份文件时,情况并非如此。
EOFError: Not enough data read. Expected: 24932 but got 911
EOFError: Not enough data read. Expected: 25409 but got 2220
我的方法有什么明显的错误吗?
我想另一个选项是 appengine backup utility没有创建有效的备份文件。您可以提出任何其他建议,我们将非常欢迎。提前致谢
最佳答案
运行 AppEngine 数据存储区备份时会创建多个元数据文件:
LongAlphaString.backup_info 创建一次。这包含有关在数据存储备份中创建的所有实体类型和备份文件的元数据。
LongAlphaString.[EntityType].backup_info 为每个实体类型创建一次。这包含有关为 [EntityType] 创建的特定备份文件的元数据以及 [EntityType] 的架构信息。
您的代码适用于查询 LongAlphaString.backup_info 的文件内容,但您似乎正在尝试查询 LongAlphaString.[EntityType].backup_info 的文件内容。这是一个脚本,它将以人类可读的格式打印每种文件类型的内容:
import cStringIO
import os
import sys
sys.path.append('/usr/local/google_appengine')
from google.appengine.api import datastore
from google.appengine.api.files import records
from google.appengine.ext.datastore_admin import backup_pb2
ALL_BACKUP_INFO = 'long_string.backup_info'
ENTITY_KINDS = ['long_string.entity_kind.backup_info']
def parse_backup_info_file(content):
"""Returns entities iterator from a backup_info file content."""
reader = records.RecordsReader(cStringIO.StringIO(content))
version = reader.read()
if version != '1':
raise IOError('Unsupported version')
return (datastore.Entity.FromPb(record) for record in reader)
print "*****" + ALL_BACKUP_INFO + "*****"
with open(ALL_BACKUP_INFO, 'r') as myfile:
parsed = parse_backup_info_file(myfile.read())
for record in parsed:
print record
for entity_kind in ENTITY_KINDS:
print os.linesep + "*****" + entity_kind + "*****"
with open(entity_kind, 'r') as myfile:
backup = backup_pb2.Backup()
backup.ParseFromString(myfile.read())
print backup
关于python - 读取 appengine backup_info 文件给出 EOFError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21035194/
从 Rails 控制台使用 MailChimp gem 时出现间歇性错误。 这是错误: Excon::Errors::SocketError: EOFError (EOFError) from /
我正在使用 tkinter 和 urllib 制作这个程序,它应该像一个下载管理器。在我几乎完成该程序后,我意识到我没有为下载定义取消按钮。在深入研究之后,我发现了多处理(在此之前我只是使用线程),显
当我尝试 chown 一个目录时,Fabric 给我一个 EOFError。只有当我从 fabric 之前运行的 python 脚本运行子进程时才会发生。 来 self 的 fabfile: ...
当我使用来自其他脚本的子进程启动我的 python3 脚本时,出现以下错误: Select the keyword preset you want to use:Traceback (most rec
编辑:我很蠢 对不起大家。我的循环不工作的原因是一个极其愚蠢的原因;我的 pickle.dump() 参数顺序错误。 操作 第一次 pickle 物体,抱歉,如果这是一个棘手的问题;看过各种其他 EO
我有一堆客户端通过 0MQ 连接到服务器。我有一个管理器队列,用于工作池与每台客户端计算机上的主进程进行通信。 在一台有 250 个工作进程的客户端机器上,我几乎立即看到一堆 EOFError。它们发
这可能会重复,但现有的答案都没有解决我的问题。 因此,我使用的是 Python 2.7,每当我尝试此操作时都会收到此错误(标题): number = int(raw_input('Number : '
这个问题在这里已经有了答案: Unable to install pygame on Python via pip (Windows 10) (6 个答案) 关闭 2 年前。 我正在使用 Windo
我正在尝试使用 pickle 为我的游戏创建一个保存文件,但是当我尝试提交我的字典,然后取回该信息时,它不起作用。 import pickle data = {'health':100, 'gold'
我读取了一个只包含一行的文件。但是,在循环结束之前我无法停止读取文件。即 python 不会抛出 EOFError 异常。我的代码有什么问题吗? for x in range(5): try:
我有一个简单的程序,我使用 pygame 导入声音,但它仍然是一个 CLI 程序。每当我将它编译成一个 exe 时,当我尝试运行它时它会给我一个 EOFError,它看起来像这样 Traceback
我最近发现了 pickle,这很神奇。但是当它用于我的实际脚本时,它对我来说是错误的,用一个单项字典测试它工作正常。我的真实脚本是数千行代码,其中存储了 Maya 中的各种对象。我不知道它是否与大小有
我有几个脚本在服务器上运行,可以对各种词典进行 pickle 和 unpickle。它们都使用相同的基本代码进行 pickle ,如下所示: SellerDict=open('/home/hostad
我有以下代码片段: def database(self): databasename="" host="" user="" password="" try:
我正在读取 CSV 作为 Spark DataFrame 并对其执行机器学习操作。我不断收到 Python 序列化 EOFError - 知道为什么吗?我认为这可能是一个内存问题——即文件超出了可用
当我运行下面的代码时,我收到此错误消息“EOFError: Ran out of input”这是什么意思??怎么才能矫正??以及如何在屏幕上输出记录的详细信息。 import pickle # th
为什么我在运行 django 服务器时会出现以下错误,我该如何解决? : EOFError: marshal data too short 细节 Performing system checks...
尝试创建用户时,我在生产中遇到此错误(我正在使用devise gem)。 EOFError (end of file reached): 我之前遇到此问题,这是由于我使用zoho mail的smtp设
我正在努力解决这一问题,我们将不胜感激! 我有两个Rails应用程序,我们称它们为Client and Service,它们都是非常简单的普通REST界面-这是基本方案: 客户端向服务发出POST/r
一切正常,直到: celery beat v3.1.18 (Cipater) is starting. __ - ... __ - _ Configuration ->
我是一名优秀的程序员,十分优秀!