如何计算 CloudCode 函数中的请求数?
How to calculate the number of requests in a CloudCode function?
我正在构建我的第一个应用程序,它使用 Parse 来存储用户数据和发送推送通知。
我们预计该应用程序如果由于其利基市场而获得成功,用户不会超过 10,000 人,因此它不会拥有庞大的用户群,尽管在高峰时段可能会从他们那里获得繁忙的流量。
我不确定我的 CloudCode 函数的结构是否尽可能高效,并且担心 requests/second 的数量在高峰时间失控(如果我们达到目标用户数)。
是否有任何方法可以计算 CloudCode 函数调用中的请求数量,以便我大致计算出免费服务允许的并发用户数?我知道您应该能够在 Analytics>Performance 图表中检查请求,但是根本没有数据通过(显然目前只有少数并发用户,但如果它只在以下情况下开始显示数据,那将毫无用处负载,而且我的应用程序的总请求似乎每天只在仪表板概览中更新一次)
我查看了定价常见问题解答,在 'What types of operations are counted as API requests?' 下提到:'Queries, saves, logins, amongst other kinds of operations will be taken into account..' 但我仍然无法确定什么将被视为请求,所以我想知道是否有人可以帮助我计算将在以下 afterSave 函数中计算的请求数...
Parse.Cloud.afterSave("Job", function(request){
var userSendingJob = request.user;
var job = request.object;
var areaId = job.get("areaId");
var description = job.get("description");
var jobFee = job.get("fee");
Parse.Cloud.useMasterKey();
var userQuery = new Parse.Query(Parse.User);
//if areaId is contained in in the user's array of areaIds it will return the object
userQuery.containedIn("areas", [areaId]);
userQuery.lessThanOrEqualTo("workingFee", jobFee);
userQuery.find({
success:function(results){
for (var i = 0; i < results.length; i++) {
var user = results[i];
var relation = user.relation("jobs");
relation.add(job);
user.save();
}
response.success("all users have been updated with job"+results.length);
},
error:function(err){
response.error("error updating users: "+err);
}
});
因此,如果仅计算此处提出的请求,我是否需要将 job.get("areaId")、job.get("description") 等算作单独的请求?我会为查询找到的每个内部用户计算 user.save() 吗?如果是这样,如果查询返回数百甚至数千个结果会怎样?
或者即使在查询响应的内循环中有大量保存,上面只是少数请求?
非常感谢。
肖恩
您对任何数据执行的每个 CURD 操作都将被计为一个请求。您通常可以对 Parse 数据执行的操作可以轻松映射到 Create
、Update
、Read
和 Delete
操作。
在您的 could 函数中,您的 find
查询被计为单个 Read
请求,无论它有多少个对象 returns。另外每一次 Save
操作都算作一次请求,所以你调用 save 的次数将被算作一次(批量更新期间的 Parse.Object.saveAll()
函数除外)最后, job.get()
不是一个服务器请求,因为它只是在请求对象上充当 getter(您不会去服务器读取任何内容)
您的函数中总共有 results.length + 1
个请求,因为您有一个查询和多个保存。请记住,调用云函数或作业也算作一次请求。
我正在构建我的第一个应用程序,它使用 Parse 来存储用户数据和发送推送通知。 我们预计该应用程序如果由于其利基市场而获得成功,用户不会超过 10,000 人,因此它不会拥有庞大的用户群,尽管在高峰时段可能会从他们那里获得繁忙的流量。 我不确定我的 CloudCode 函数的结构是否尽可能高效,并且担心 requests/second 的数量在高峰时间失控(如果我们达到目标用户数)。
是否有任何方法可以计算 CloudCode 函数调用中的请求数量,以便我大致计算出免费服务允许的并发用户数?我知道您应该能够在 Analytics>Performance 图表中检查请求,但是根本没有数据通过(显然目前只有少数并发用户,但如果它只在以下情况下开始显示数据,那将毫无用处负载,而且我的应用程序的总请求似乎每天只在仪表板概览中更新一次)
我查看了定价常见问题解答,在 'What types of operations are counted as API requests?' 下提到:'Queries, saves, logins, amongst other kinds of operations will be taken into account..' 但我仍然无法确定什么将被视为请求,所以我想知道是否有人可以帮助我计算将在以下 afterSave 函数中计算的请求数...
Parse.Cloud.afterSave("Job", function(request){
var userSendingJob = request.user;
var job = request.object;
var areaId = job.get("areaId");
var description = job.get("description");
var jobFee = job.get("fee");
Parse.Cloud.useMasterKey();
var userQuery = new Parse.Query(Parse.User);
//if areaId is contained in in the user's array of areaIds it will return the object
userQuery.containedIn("areas", [areaId]);
userQuery.lessThanOrEqualTo("workingFee", jobFee);
userQuery.find({
success:function(results){
for (var i = 0; i < results.length; i++) {
var user = results[i];
var relation = user.relation("jobs");
relation.add(job);
user.save();
}
response.success("all users have been updated with job"+results.length);
},
error:function(err){
response.error("error updating users: "+err);
}
});
因此,如果仅计算此处提出的请求,我是否需要将 job.get("areaId")、job.get("description") 等算作单独的请求?我会为查询找到的每个内部用户计算 user.save() 吗?如果是这样,如果查询返回数百甚至数千个结果会怎样?
或者即使在查询响应的内循环中有大量保存,上面只是少数请求?
非常感谢。
肖恩
您对任何数据执行的每个 CURD 操作都将被计为一个请求。您通常可以对 Parse 数据执行的操作可以轻松映射到 Create
、Update
、Read
和 Delete
操作。
在您的 could 函数中,您的 find
查询被计为单个 Read
请求,无论它有多少个对象 returns。另外每一次 Save
操作都算作一次请求,所以你调用 save 的次数将被算作一次(批量更新期间的 Parse.Object.saveAll()
函数除外)最后, job.get()
不是一个服务器请求,因为它只是在请求对象上充当 getter(您不会去服务器读取任何内容)
您的函数中总共有 results.length + 1
个请求,因为您有一个查询和多个保存。请记住,调用云函数或作业也算作一次请求。