hus*_*ayt 3 java backup google-app-engine google-cloud-storage
我想以编程方式在GAE for Java上运行备份作业。因此,我尝试将此处描述的代码移植到适用于Java的Appengine上:
Queue queue = QueueFactory.getDefaultQueue();
String backendAddress = BackendServiceFactory.getBackendService().getBackendAddress("ah-builtin-python-bundle");
TaskOptions taskOptions = withUrl("/_ah/datastore_admin/backup.create")
.method(TaskOptions.Method.GET)
.param("name", "Backup_Task")
.param("filesystem", "gs")
.param("gs_bucket_name", "backup_bkt")
.param("queue", queue.getQueueName())
.header("Host", backendAddress).
.param("kind", "customer")
.param("kind", "address")
queue.add(taskOptions);
Run Code Online (Sandbox Code Playgroud)
一切似乎都是正确的。当我运行上面的代码时,它会添加任务调用来推送队列,但是不会在ah-builtin-python-bundle上执行,而是在我的应用的默认版本上执行,显然会返回404。请参见以下日志:
2013-10-02 15:58:27.315 /_ah/datastore_admin/backup.create?name=Backup_Task&filesystem=gs&gs_bucket_name=backup&queue=next-version&kind=address&kind=customer 404 26ms 0kb AppEngine-Google; (+ http://code.google.com/appengine)0.1.0.2--[02 / Oct / 2013:08:58:27 -0700]“ GET /_ah/datastore_admin/backup.create?name=Backup_Task&filesystem=gs&gs_bucket_name = backup&queue = next-version&kind = address&kind = customer HTTP / 1.1“ 404294” http://version.myapp.appspot.com/tasks/backup “” AppEngine-Google;(+ http://code.google.com/ appengine)“” version.myapp.appspot.com“ ms = 26 cpu_ms = 47 cpm_usd = 0.000033 queue_name =下一个版本task_name = 3563633336363 app_engine_release = 1.8.5 instance = xxxxxxxxxxxxxxx
我在这里也看到了执行相同操作的代码,但是我不确定它是否正常运行。
我想知道,我想念什么?
我发现的解决方案如下:
Queue queue = QueueFactory.getQueue("backupQueue");
TaskOptions taskOptions = withUrl("/_ah/datastore_admin/backup.create")
.method(TaskOptions.Method.GET)
.param("name", 'Backuptask')
.param("filesystem", "gs")
.param("gs_bucket_name", BACKUP_BUCKET + '/' + DateTime.now().toString("yyyy/MM/dd/'" + nameSpace + "'-HH-mm"))
.param("namespace", NamespaceManager.get();)
.param("queue", queue.getQueueName())
.param("kind", "customer")
.param("kind", "address");
queue.add(taskOptions);
Run Code Online (Sandbox Code Playgroud)
诀窍是使用backupQueue目标锁定ah-builtin-python-bundle。您可以通过添加以下内容来做到这一点queue.xml:
<queue>
<!-- a queue for backups tasks -->
<name>backupQueue</name>
<rate>1/s</rate>
<bucket-size>10</bucket-size>
<max-concurrent-requests>3</max-concurrent-requests>
<retry-parameters>
<!-- only 1 retry attempt -->
<task-retry-limit>2</task-retry-limit>
</retry-parameters>
<target>ah-builtin-python-bundle</target>
</queue>
| 归档时间: |
|
| 查看次数: |
446 次 |
| 最近记录: |