2024-11-26 04:08:13 +00:00
|
|
|
|
# coding=utf-8
|
|
|
|
|
|
"""
|
|
|
|
|
|
@project: MaxKB
|
|
|
|
|
|
@Author:虎
|
|
|
|
|
|
@file: page_utils.py
|
|
|
|
|
|
@date:2024/11/21 10:32
|
|
|
|
|
|
@desc:
|
|
|
|
|
|
"""
|
|
|
|
|
|
from math import ceil
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def page(query_set, page_size, handler, is_the_task_interrupted=lambda: False):
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
@param query_set: 查询query_set
|
|
|
|
|
|
@param page_size: 每次查询大小
|
|
|
|
|
|
@param handler: 数据处理器
|
|
|
|
|
|
@param is_the_task_interrupted: 任务是否被中断
|
|
|
|
|
|
@return:
|
|
|
|
|
|
"""
|
2024-11-26 08:24:03 +00:00
|
|
|
|
query = query_set.order_by("id")
|
2024-11-26 04:08:13 +00:00
|
|
|
|
count = query_set.count()
|
|
|
|
|
|
for i in range(0, ceil(count / page_size)):
|
|
|
|
|
|
if is_the_task_interrupted():
|
|
|
|
|
|
return
|
|
|
|
|
|
offset = i * page_size
|
2024-11-26 08:24:03 +00:00
|
|
|
|
paragraph_list = query.all()[offset: offset + page_size]
|
2024-11-26 04:08:13 +00:00
|
|
|
|
handler(paragraph_list)
|
2025-01-07 03:15:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def page_desc(query_set, page_size, handler, is_the_task_interrupted=lambda: False):
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
@param query_set: 查询query_set
|
|
|
|
|
|
@param page_size: 每次查询大小
|
|
|
|
|
|
@param handler: 数据处理器
|
|
|
|
|
|
@param is_the_task_interrupted: 任务是否被中断
|
|
|
|
|
|
@return:
|
|
|
|
|
|
"""
|
|
|
|
|
|
query = query_set.order_by("id")
|
|
|
|
|
|
count = query_set.count()
|
|
|
|
|
|
for i in sorted(range(0, ceil(count / page_size)), reverse=True):
|
|
|
|
|
|
if is_the_task_interrupted():
|
|
|
|
|
|
return
|
|
|
|
|
|
offset = i * page_size
|
|
|
|
|
|
paragraph_list = query.all()[offset: offset + page_size]
|
|
|
|
|
|
handler(paragraph_list)
|