情况:
我的项目大多是自动化的任务。我的GAE (标准环境)应用程序有40个这样的crons作业,都在默认模块(前端)上运行:
- description: My cron job Nth
url: /mycronjob_n/ ###### Please note n is the nth cron job.
schedule: every 1 minutes
每个cron作业
@app.route('/mycronjob_n/')
def mycronjob_n():
for i in (0,100):
pram = prams[i]
options = TaskRetryOptions(task_retry_limit=0,task_age_limit=0)
deferred.defer(mytask,pram)
mytask
在哪里
def mytask(pram):
#Do some loops, read and write datastore, call api, which I guesss taking less than 30 seconds.
return 'Task finish'
问题:
作为问题的标题,我的RAM快用完了。前端实例小时数增加到100小时。
我的错误想法?
我的问题:(目的:尽量降低前端和后端实例的时长,我接受延迟)
如果3-4个实例无法处理4000个请求,为什么GAE不再增加10 - 20个F1实例,然后在空闲时关闭?我在app.yaml中设置了自动缩放。我在这里看不到GAE自动缩放的含义。
@app.route('/mycronjob_n/') def mycronjob_n():
对于(0,100)中的i: pram = pramsi options = TaskRetryOptions(task_retry_limit=0,task_age_limit=0) mytask(pram) #调用函数mytask
在这里,我的应用程序是否每分钟有40个请求,每个请求运行100 x 30秒=3000秒?那么,这种方法是否也会返回内存不足呢?我是否应该创建一个在F1实例上运行后端服务,并将所有cron作业放在该后端服务上?我听说一个请求可以运行24小时。
我的遗憾:-我很遗憾我选择了GAE来做这个项目。我选择它是因为它有空闲层。但我意识到自由层只是出于兴趣/测试的目的。如果我运行一个真正的应用程序,成本会增加得非常快,这让我觉得GAE很昂贵。尽管我尽了最大努力优化数据存储的读/写,但它们的开销还是很大的。前端时间也总是很长。我每月为GAE支付40美元。每月40美元,如果我选择Heroku,Digital Ocean,也许我可以得到更好的服务器?你认为这样对吗?
https://stackoverflow.com/questions/52067297
复制相似问题