404尝试在谷歌应用引擎项目中创建备份时

2024-10-05 10:21:28 发布

您现在位置:Python中文网/ 问答频道 /正文

设置

在遵循问题AppEngine datastore - backup programatically的未接受答案之后,我遇到了404问题

正如我所建议的,由一个数据存储提供程序启用的答案。我可以在googleappengine控制台手动触发一个数据存储备份,备份运行时不会出现任何故障。在

此问题中的代码位于名为“app”的模块中。默认为“非”。在

404问题

这是在克罗恩·亚姆. 在

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

url的处理程序将把备份任务放入队列中,队列反过来调用

^{pr2}$

(我在这里用“test”替换了我的应用程序id)

这将在日志中显示404错误。

enter image description here

如果我在浏览器中使用上面的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。在

enter image description here

下面是路由/_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'
            )
        }
    )

问题:

  • 问题的原因是什么?在
  • 在python代码的taskqueue.add部分是否需要队列名称?在
  • 在我的山药,是否需要将target设置为ah-builtin-python-bundle?在

编辑

数据存储管理内置功能已启用,如此屏幕截图所示。在

没有调度.yaml在

enter image description here


Tags: 数据答案代码namegsurl处理程序bucket
2条回答

它与队列配置问题有关。在

中存在“default”队列定义应用程序yaml在实施定期备份之前。因此,备份任务没有达到目标“ah-builtinpython bundle”

如果我定义一个新队列

- name: data-backup
  rate: 1/s
  target: ah-builtin-python-bundle

然后使用此代码插入任务

^{pr2}$

然后googleappengine就可以创建备份集了

你有没有enabled the Datastore Admin?您需要这样做才能允许模块ah-builtin-python-bundle存在,这是当您激活Datastore admin时“部署”到您的应用程序中的一个特殊模块,它真正负责响应对/_ah/datastore_admin的请求,并生成从数据存储读取的MapReduce作业,并在云存储中生成备份文件(或发送到其他任何位置)他们去了)。在

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

另一种可能是处理请求的模块不是ah-builtin-python-bundle,而是另一个模块。即使在task add方法中指定了不同的目标,如果有一个正在重新路由请求的dispatch rule,也可能发生这种情况。在

相关问题 更多 >

    热门问题