Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 如何控制任务队列上的哪些版本作业在应用程序内引擎上运行?_Google App Engine_Version_Task Queue - Fatal编程技术网

Google app engine 如何控制任务队列上的哪些版本作业在应用程序内引擎上运行?

Google app engine 如何控制任务队列上的哪些版本作业在应用程序内引擎上运行?,google-app-engine,version,task-queue,Google App Engine,Version,Task Queue,Google App Engine中任务队列上的作业是自动放在默认后端上,还是在后端版本上安排调用它们的代码 假设我有两个后端,一个叫做“test”,另一个叫做“production”,其中“production”是我的默认版本 在每一个文件中,我都有一个简单化的文件,如下所示: from google.appengine.api import taskqueue import webapp2 class QueueScheduler(webapp2.RequestHandler):

Google App Engine中任务队列上的作业是自动放在默认后端上,还是在后端版本上安排调用它们的代码

假设我有两个后端,一个叫做“test”,另一个叫做“production”,其中“production”是我的默认版本

在每一个文件中,我都有一个简单化的文件,如下所示:

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
都将生成一个任务,以调用通过转到
queues.myApp.appspot.com/path/to/myTask
获得的代码,同时将“生产”保留为默认后端版本

元:
如果这很重要,我要处理的一个特殊问题是,我的公司在我们的移动应用程序中使用的代码版本与在web应用程序中使用的代码版本不同。我们在应用程序中硬编码一个版本号,使应用程序指向我们发布更新时的默认版本,以便我们可以进行向后不兼容的修订。通常情况下,我们希望在更新用户看到的界面之前更新数据处理。我正在寻找一种解决方案,使我们能够做到这一点,而不必确保在部分完成接口更改时不修改数据处理,也不必同时处理代码的多个分支。我们希望调用我们的应用程序的默认版本和旧版本,以便能够在尚未准备好面向客户端的版本上完成数据处理。在cron.yaml中创建任务并在其中设置版本可以解决我们必须保持活动状态的所有数据的问题,但对于某些事情,我们宁愿在多个分支中开发编程开销,也不愿解决不实时保持数据的问题。

您的答案大致如下:


此添加函数的文档实际上更好地处理了这个主题

target
参数允许您控制所使用的版本,因此您可以在代码中设置一次,并将其应用于您部署的所有版本,这正是我提问时所寻找的

简言之,默认情况下,任务在启动任务的url所在的后端运行,但可以通过代码控制任务队列在应用程序的哪个版本上运行。为此,只需调用
taskqueue.add('/relative/path/To/task',target='queues')