Как рассчитать количество запросов в функции CloudCode?

Я создаю свое первое приложение, которое использует Parse для хранения пользовательских данных и отправки Push-уведомлений. Мы ожидаем, что приложение будет иметь не более 10000 пользователей, если оно будет успешным из-за своей нишевого рынка, поэтому у него не будет обширной пользовательской базы, хотя он может получать от них трафик в пиковые часы. Я не уверен, что мои функции CloudCode структурированы настолько эффективно, насколько это возможно, и беспокоюсь о количестве запросов / секунду, выходящих из-под контроля в пиковые моменты времени (если мы достигнем целевого числа пользователей).

Есть ли способ подсчета количества запросов при вызове функции CloudCode, чтобы я мог приблизительно определить, сколько одновременных пользователей разрешит бесплатный сервис? Я знаю, что вы должны иметь возможность проверять запросы в графиках Analytics>Performance, но данные вообще не поступают (очевидно, в настоящее время есть только несколько одновременных пользователей, но бесполезно, если они начинают показывать данные только один раз под загрузить, а общее количество запросов для моего приложения обновляется только один раз в день в обзоре панели управления)

Я просмотрел часто задаваемые вопросы о ценах и в разделе "Какие типы операций считаются запросами API?" в нем упоминается: "Запросы, сохранения, логины и другие операции будут приняты во внимание...", но я до сих пор не могу понять, что будет считаться запросом, поэтому я подумал, может ли кто-нибудь помочь мне определить количество запросов это будет учтено в следующей функции 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() для каждого из внутренних пользователей, найденных по запросу? Если так, что произойдет, если запросом будут возвращены сотни или даже тысячи результатов?

Или вышеупомянутое - всего лишь несколько запросов, даже с большим объемом сохранений во внутреннем цикле ответа на запрос?

Большое спасибо.

Шон

1 ответ

Решение

Каждая операция CURD, выполненная вами с любыми данными, будет считаться одним запросом. То, что вы обычно можете выполнять с данными Parse, может быть легко сопоставлено с Create, Update, Read а также Delete операции.

В вашем мог функционировать, ваш find запрос считается одним Read запрос независимо от того, сколько объектов он возвращает. Также каждый Save операция считается как запрос, поэтому количество вызовов, которые вы вызываете save, будет считаться как единое (кроме Parse.Object.saveAll() функция во время пакетных обновлений) Наконец, job.get() не является запросом к серверу, потому что он просто действует как получатель для объекта запроса (вы не собираетесь на сервер читать что-либо)

Всего у вас есть results.length + 1 запросы в вашей функции, так как у вас есть один запрос и несколько сохранений. Помните, что вызов облачной функции или задания также считается одним запросом.

Другие вопросы по тегам