查询\u超过\u最大\u匹配\u Kaltura API(Python)上允许的错误

2024-10-01 04:44:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法生成Kaltura中的所有条目。触发ApiException,消息为“无法生成列表。已达到最大匹配值”(错误:查询\u超出\u最大匹配\u允许)

我试图通过将sessionPrivileges设置为disableentitlement来解决这个问题

class class_chk_integrity():
    client = None
    pagesize = 0

    def __init__(self,worker_num, progress):
        self.pagesize = 30
        self.worker_num = worker_num
        self.progress = progress

        config = KalturaConfiguration(2723521)
        config.serviceUrl = "https://www.kaltura.com/"
        self.client = KalturaClient(config)
        ks = self.client.session.start("KALTURA_ADMIN_SECRET",
            "email@email.com",
            KalturaPluginsCore.KalturaSessionType.ADMIN,
            "KALTURA_PARTNER_ID",
            432000,
            "disableentitlement")
        self.client.setKs(ks)

我还尝试根据id进行筛选。但是,我无法使filter.idNotIn正常工作

   def get_total_reg(self, cont, lastEntryIds, lastEntryCreatedAt):
        
        
        filter = KalturaPluginsCore.KalturaBaseEntryFilter()

        if lastEntryIds != "":
            filter.idNotIn = lastEntryIds

        filter.orderBy = KalturaBaseEntryOrderBy.CREATED_AT_DESC

        pager = KalturaPluginsCore.KalturaFilterPager()
        

        pageIndex = 1
        entriesGot = 0

        pager.pageSize = self.pagesize
        pager.setPageIndex = pageIndex
        result = self.client.baseEntry.list(filter, pager)
        totalCount = result.totalCount

        if totalCount > 10000:
            totalCount = 9970

        if totalCount <= 0:
            cont = False
        
        while entriesGot < totalCount:

            pager.pageSize = self.pagesize
            pageIndex += 1
            pager.pageIndex = pageIndex
            result = self.client.baseEntry.list(filter, pager)
            entriesGot += len(result.objects)

        
            for e in result.objects:
                if lastEntryIds == "":
                    lastEntryIds.append(e.id)
                else:
                    lastEntryIds.append(e.id)

                lastEntryCreatedAt = e.createdAt
        

        return result.totalCount, self.pagesize, cont, lastEntryIds, lastEntryCreatedAt

这是我调用函数的方式

if __name__ == '__main__':
    try:
        log = _ServiceUtils.log()
        log.setup('all', 'integrity')
        cont = True
        lastEntryIds = []
        lastEntryCreatedAt = 0


        while cont is True:

            kmc = class_chk_integrity(0,0)
        
            kmc_total_reg, kmc_page_size, cont, lastEntryIds, lastEntryCreatedAt = kmc.get_total_reg(cont, lastEntryIds, lastEntryCreatedAt)

            interval = 10
            max_threads = math.ceil(kmc_total_reg / (interval * kmc_page_size))
            # max_threads = 1
            threads_list = []

            print('TOTAL REG : %s | PAGE_SIZE : %s | INTERVAL : %s | THREADS : %s' % (kmc_total_reg,kmc_page_size,interval,max_threads))  

            progress = class_progress_thread(max_threads)

            for index in range(0,max_threads):
                page_ini = index * interval
                page_end = index * interval + interval
                progress.add_worker_progress(index,datetime.now())

                threads_list.append(threading.Thread(target=thread_chk_integrity, args=(index, log, index * interval + 1,index * interval + interval,progress)))
        
            threads_list.append(threading.Thread(target=thread_output_progress, args=(progress,max_threads)))    

            for thread in threads_list:
                thread.start()

            for thread in threads_list:
                thread.join()

            while not progress.stop(): time.sleep(30)


    except KeyboardInterrupt:
        try:
            sys.exit(0)
        except SystemExit:
            os._exit(0)

我很感激你能帮我做这件事。 谢谢你的关注


Tags: selfclientindexfilterthreadlistprogressinterval
1条回答
网友
1楼 · 发布于 2024-10-01 04:44:10
 if totalCount > 10000:
     totalCount = 9970

我很想知道你为什么这样改变总数

短应答-只要结果集达到10K,分页就可以工作

要解决这个问题,请按创建日期对结果进行排序(就像您所做的那样),当到达10K时,开始一个新的搜索,其中过滤器中的创建日期是您在上一次搜索中获得的最后一个值。当然,重置你的寻呼

相关问题 更多 >