Let's say I have 3 requests:
@app.route('/schedulejob1/')
def schedulejob1():
for pram in prams1:
deferred.defer(scheduletjob1Task,pram)
return 'Running'
@app.route('/schedulejob1/')
def schedulejob1():
for pram in prams2:
deferred.defer(scheduletjob1Task,pram)
return 'Running'
@app.route('/schedulejob1/')
def schedulejob1():
for pram in prams3:
deferred.defer(scheduletjob1Task,pram)
return 'Running'
So my cron.yaml is
cron:
- description: Run schedule job1
url: /schedulejob1/
schedule: every 1 minutes
- description: Run schedule job2
url: /schedulejob2/
schedule: every 1 minutes
- description: Run schedule job3
url: /schedulejob3/
schedule: every 1 minutes
This approach will have 3 requests per minutes so that there is a big chance gae will dynamically create more instances which increase cost of (instances x frondend/backend hours).
My plan is to put 3 requests into a single request:
@app.route('/schedulejobs/')
def schedulejobs():
for pram in prams1
deferred.defer(scheduletjob1Task,pram)
for pram in prams2
deferred.defer(scheduletjob2Task,pram)
for pram in prams3
deferred.defer(scheduletjob3Task,pram)
and then
cron:
- description: Run schedule jobs
url: /schedulejobs/
Does the second approach help to reduce the number of requests? therefore reduce cost?
My objective is to break a request into multiple task queues, each taskqueue run in less than 1 minutes, and it can fail permanently (or can retry 1 time). I also will put a a half of cron jobs on backend instances to take advantage s of 9 free hours.
If u have any idea how to reduce the instance hours, please advice.