132 lines
3.3 KiB
Python
Executable File
132 lines
3.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
||
"""
|
||
Example usage of the queue system.
|
||
"""
|
||
|
||
import sys
|
||
import time
|
||
from pathlib import Path
|
||
|
||
# 添加项目根目录到Python路径
|
||
project_root = Path(__file__).parent.parent
|
||
sys.path.insert(0, str(project_root))
|
||
|
||
from task_queue.manager import queue_manager
|
||
from task_queue.tasks import process_file_async, process_multiple_files_async
|
||
|
||
|
||
def example_single_file():
|
||
"""示例:处理单个文件"""
|
||
print("=== 示例:处理单个文件 ===")
|
||
|
||
project_id = "test_project"
|
||
file_path = "public/test_document.txt"
|
||
|
||
# 将文件加入队列
|
||
task_id = queue_manager.enqueue_file(
|
||
project_id=project_id,
|
||
file_path=file_path,
|
||
original_filename="example_document.txt"
|
||
)
|
||
|
||
print(f"任务已提交,任务ID: {task_id}")
|
||
|
||
# 检查任务状态
|
||
time.sleep(2)
|
||
status = queue_manager.get_task_status(task_id)
|
||
print(f"任务状态: {status}")
|
||
|
||
|
||
def example_multiple_files():
|
||
"""示例:批量处理文件"""
|
||
print("\n=== 示例:批量处理文件 ===")
|
||
|
||
project_id = "test_project_batch"
|
||
file_paths = [
|
||
"public/test_document.txt",
|
||
"public/goods.xlsx" # 假设这个文件存在
|
||
]
|
||
original_filenames = [
|
||
"batch_document_1.txt",
|
||
"batch_goods.xlsx"
|
||
]
|
||
|
||
# 将多个文件加入队列
|
||
task_ids = queue_manager.enqueue_multiple_files(
|
||
project_id=project_id,
|
||
file_paths=file_paths,
|
||
original_filenames=original_filenames
|
||
)
|
||
|
||
print(f"批量任务已提交,任务ID: {task_ids}")
|
||
|
||
|
||
def example_zip_file():
|
||
"""示例:处理zip文件"""
|
||
print("\n=== 示例:处理zip文件 ===")
|
||
|
||
project_id = "test_project_zip"
|
||
zip_path = "public/all_hp_product_spec_book2506.zip"
|
||
|
||
# 将zip文件加入队列
|
||
task_id = queue_manager.enqueue_zip_file(
|
||
project_id=project_id,
|
||
zip_path=zip_path
|
||
)
|
||
|
||
print(f"zip任务已提交,任务ID: {task_id}")
|
||
|
||
|
||
def example_queue_stats():
|
||
"""示例:获取队列统计信息"""
|
||
print("\n=== 示例:队列统计信息 ===")
|
||
|
||
stats = queue_manager.get_queue_stats()
|
||
print(f"队列统计信息:")
|
||
for key, value in stats.items():
|
||
if key != "recent_tasks":
|
||
print(f" {key}: {value}")
|
||
|
||
|
||
def example_cleanup():
|
||
"""示例:清理任务"""
|
||
print("\n=== 示例:清理任务 ===")
|
||
|
||
project_id = "test_project"
|
||
|
||
# 将清理任务加入队列(延迟10秒执行)
|
||
task_id = queue_manager.enqueue_cleanup_task(
|
||
project_id=project_id,
|
||
older_than_days=1, # 清理1天前的文件
|
||
delay=10
|
||
)
|
||
|
||
print(f"清理任务已提交,任务ID: {task_id}")
|
||
|
||
|
||
def main():
|
||
"""主函数"""
|
||
print("队列系统使用示例")
|
||
print("=" * 50)
|
||
|
||
try:
|
||
# 运行示例
|
||
example_single_file()
|
||
example_multiple_files()
|
||
example_zip_file()
|
||
example_queue_stats()
|
||
example_cleanup()
|
||
|
||
print("\n" + "=" * 50)
|
||
print("示例运行完成!")
|
||
print("\n要查看任务执行情况,请运行:")
|
||
print("python queue/consumer.py --check")
|
||
print("\n要启动队列消费者,请运行:")
|
||
print("python queue/consumer.py")
|
||
|
||
except Exception as e:
|
||
print(f"运行示例时发生错误: {str(e)}")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main() |