Google App Engine 中任务队列上的作业是否会自动放在默认后端,或者它们是否被安排在调用它们的代码的后端版本上?
假设我有两个后端,一个称为“测试”,一个称为“生产”,其中“生产”是我的默认版本。
在他们每个人中,我都有一个简单化的文件,如下所示:
from google.appengine.api import taskqueue
import webapp2
class QueueScheduler(webapp2.RequestHandler):
def get(self): #in real life, post, but this makes for an easier example
taskqueue.add('path/to/myTask')
app = webapp2.WSGIApplication(('/myScheduler',QueueScheduler))
当我打电话给 时test.myApp.appspot.com/myScheduler
,我将创建指向的任务test.myApp.appspot.com/path/to/myTask
还是将创建一个任务myApp.appspot.com/path/to/myTask
(即production.myApp.appspot.com/path/to/myTask
)
有没有办法让我从代码中控制它?假设我有第三个后端,称为“队列”。有什么方法可以更改上面的代码,以便调用test.myAppp.appspot.com/myScheduler
,production.myApp.appspot.com/myScheduler
和queues.myApp.appspot.com/myScheduler
all 会生成一个任务来调用 go to 到达的代码,queues.myApp.appspot.com/path/to/myTask
同时保持“生产”作为默认后端版本?
meta:如果重要的话,我正在处理的特殊问题是我的公司为我们的移动应用程序使用的代码版本与我们为 Web 应用程序使用的代码版本不同。我们将版本号硬编码到我们的应用程序中,以使应用程序指向我们发布更新时的默认版本,以便我们可以进行向后不兼容的修订。我们也经常希望在更新用户看到的界面之前更新我们的数据处理。我正在寻找一种解决方案,使我们能够做到这一点,而不必确保在我们部分完成对接口的更改或同时处理代码的多个分支时不会修改数据处理。我们' 希望调用我们应用程序的默认版本和旧版本,以便能够在尚未准备好面向客户端的版本上完成数据处理。在 cron.yaml 中创建任务并在那里设置版本解决了我们必须保持活动的所有数据的问题,但对于某些事情,我们宁愿在多个分支中开发的编程开销也不愿不保持的问题数据实时。