In Cron and App Versions, I read.
If the target parameter has been set for a job, the request is sent to the specified version. Otherwise Cron requests are sent to the default version of the application.
That’s the only sentence about this subject (in that doc). Will someone get angry if I say that Google is doing a lot of great stuff, but documentation isn’t one of them? Oops, I guess I just said it.
So I get that if in my cron.xml, I add a target parameter with my version identifier in it, I can target a different version. However, suppose I’ve two different versions, one of which is the default, both with the same cron.xml. Will cron run only in the default version? Or will cron be run in every version defining a cron.xml ?
Same question for task queues, I saw that the task queues and their content are shared among versions. For instance if I create a new queue in a different version, that new queue is visible also to the default version. I guess that the only application allowed to process the queue is the default version, but I would like to be reassured :-).
I believe that there is only one
cronqueue between all versions of your app; so the cron task will only call the default version, unless you specify otherwise. If (eg) you may have some housekeeping that you want to do per-version, you’d have to make multiple entries.Likewise, tasks will go to your default version of your application, unless specifically routed otherwise…
The cron & tasks in App Engine are essentially “client-side,” so it might help to think of it in terms of the URL space you’re presenting to the public. App Engine’s cron may have some special knowledge that helps it find specific versions of your app, but generally, it’s just going to fire off precisely the same way as when any other arbitrary user happens to hit it…