如何在批量用户中运行解析云作业以避免时间限制

How to run a Parse cloud job in batches of users to avoid time limit?

本文关键字:作业 时间 用户 运行      更新时间:2023-09-26

我目前正在运行以下Parse云代码作业,该作业会遍历数据库中的每个用户,并且我开始达到15分钟的时间限制。如何将其设置为一次500个用户的批量运行,而不是一次所有用户?我需要它按顺序运行用户,所以第一批用户为1-500,第二批用户为500-1000,以此类推,这样就不会重复任何人。

Parse.Cloud.job("MCBackground", function(request, status) {
    // ... other code to setup usersQuery ...
    Parse.Cloud.useMasterKey();
    var usersQuery = new Parse.Query(Parse.User);
    return usersQuery.each(function(user) {
            return processUser(user)
                .then(function(eBayResults) {
                    return mcComparison(user, eBayResults);
                });
        })
        .then(function() {
            // Set the job's success status
            status.success("MCBackground completed successfully.");
        }, function(error) {
            // Set the job's error status
            status.error("Got an error " + JSON.stringify(error));
        });
});

首先,从您的评论中,我看到您有一个可以添加的约束:仅查询具有matchCenterItem:的用户对象

query.exist("matchCenterItem");

我不知道有多少百分比的用户会没有这个字段,但也许你现在已经减少了要获取的用户数量。

我不知道这个作业多久运行一次,也不知道你在比较什么,但这个数据发生变化的可能性有多大?你总是需要在所有用户上运行它吗?或者你可以设置一个标志,这样你就不会再在同一个用户上运行了吗?或者直到一段时间过去?