尝试在 Google App Engine 项目中创建备份时出现 404

2024-01-01

Setup

我按照以下步骤后遇到了404问题不被接受问题的答案App Engine 数据存储区 - 以编程方式备份 https://stackoverflow.com/questions/15811982/appengine-datastore-backup-programatically

我已按照答案提供者之一的建议启用了数据存储管理。我可以在 Google App Engine 控制台中手动触发数据存储备份,并且备份运行不会出现任何故障。

这个问题中的代码位于一个名为“app”的模块中。不是“默认”。

404问题

这是 cron.yaml 中的 cron 作业。

cron:
- description: Regular backup
  url: /_backup/fullbackup
  schedule: every 24 hours

url 的处理程序会将备份任务放入队列中,队列依次调用

_ah/datastore_admin/backup.create?
gs_bucket_name=%2Fgs%2Ftest.appspot.com%2F21-06-2015&kind=Test&kind=TestContent
&kind=TestDocument&filesystem=gs

(我在这里用“测试”替换了我的应用程序 ID)

这显示了一个404日志中的错误。

如果我在浏览器中使用上面的 url 和我的应用程序主机名(即https://test.appspot.com/_ah/datastore_admin/backup.create? gs_bucket_name=%2Fgs%2Ftest.appspot.com%2F21-06-2015&kind=Test&kind=TestContent &kind=TestDocument&filesystem=gs),我也得到了 404。

这是路由处理程序中的相关代码/_backup/fullbackup

    task = taskqueue.add(
        url='/_ah/datastore_admin/backup.create',
        method='GET',
        target='ah-builtin-python-bundle',
        params={
            'filesystem': 'gs',
            'gs_bucket_name': self.get_bucket_name(),
            'kind': (
                'Test',
                'TestContent',
                'TestDocument'
            )
        }
    )

问题:

  • 问题的原因是什么?
  • 我需要在队列名称taskqueue.addpython代码的一部分?
  • 在我的 cron.yaml 中,我需要将目标设置为ah-builtin-python-bundle?

EDIT

内置的 datastore-admin 已启用,如该屏幕截图所示。

并且没有dispatch.yaml


启用数据存储管理 https://cloud.google.com/appengine/docs/adminconsole/datastoreadmin#enabling_datastore_admin_for_an_application?您需要完成此操作才能允许该模块ah-builtin-python-bundle存在,这是一个特殊的模块,当您激活数据存储管理时,“部署”到您的应用程序,它实际上负责响应请求/_ah/datastore_admin并生成 MapReduce 作业,从数据存储中读取数据并在云存储(或您将备份文件发送到的其他位置)中生成备份文件。

另外,另一种可能性是您使用过test.appspot.com硬编码到您的应用程序中。您拥有该应用程序 ID“test”吗?从您在浏览器中看到的错误屏幕截图来看,您似乎正在尝试备份到存储桶”test.appspot.com”,这将是应用程序 ID 为“test”的应用程序的默认存储桶。但是,在您显示的日志屏幕截图中,它还尝试备份到“example.appspot.com" 存储桶。确保您的应用程序拥有这些存储桶。

另一种可能性是处理请求的模块不是ah-builtin-python-bundle,而是另一个。即使您在任务添加方法中指定了不同的目标,如果您有调度规则 https://cloud.google.com/appengine/docs/python/modules/routing#routing_with_a_dispatch_file这是重新路由请求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试在 Google App Engine 项目中创建备份时出现 404 的相关文章

随机推荐