main.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import argparse
  2. from logger.logging import setup_logging
  3. logger = setup_logging()
  4. def main():
  5. """主函数"""
  6. # 创建参数解析器
  7. parser = argparse.ArgumentParser(
  8. description="Minio文档处理系统 - 将Minio中的文档解析并存储到Milvus向量数据库",
  9. formatter_class=argparse.RawDescriptionHelpFormatter,
  10. epilog="""
  11. 使用示例:
  12. # 全量刷新模式
  13. python main.py --provider minio --mode full-refresh
  14. # 排查补漏模式
  15. python main.py --provider minio --mode backfill
  16. # 增量更新模式(实时监听)
  17. python main.py --provider minio --mode listen
  18. # 使用 OSS 作为对象存储提供商
  19. python main.py --provider oss --mode listen
  20. """
  21. )
  22. parser.add_argument(
  23. "--mode",
  24. choices=["full-refresh", "backfill", "listen"],
  25. required=True,
  26. help="运行模式选择: full-refresh=全量刷新, backfill=排查补漏, listen=增量更新(实时监听)"
  27. )
  28. parser.add_argument(
  29. "--provider",
  30. choices=["oss", "minio"],
  31. default="minio",
  32. type=str,
  33. help="对象存储提供商: oss=阿里云OSS, minio=Minio"
  34. )
  35. # 解析命令行参数
  36. args = parser.parse_args()
  37. logger.info("=== Minio文档处理系统 ===")
  38. logger.info(f"运行模式: {args.mode}")
  39. try:
  40. # 创建监听器实例
  41. if args.provider == "oss":
  42. from oss_event_handler import OSSEventHandler
  43. listener = OSSEventHandler()
  44. logger.info(f"使用 OSS 最为对象存储提供商")
  45. else:
  46. from minio_event_handler import MinioEventHandler
  47. listener = MinioEventHandler()
  48. logger.info(f"默认使用 Minio 作为对象存储提供商")
  49. logger.info("=== 系统初始化完成 ===")
  50. # 根据模式执行相应操作
  51. if args.mode == "full-refresh":
  52. logger.info("\n执行全量刷新模式...")
  53. listener.full_update()
  54. elif args.mode == "backfill":
  55. logger.info("\n执行排查补漏模式...")
  56. listener.backfill_update()
  57. elif args.mode == "listen":
  58. logger.info("\n执行增量更新模式(实时监听)...")
  59. logger.info("提示: 使用 Ctrl+C 停止监听,或使用 nohup 在后台运行")
  60. listener.start_listening()
  61. else:
  62. ## 使用方式说明
  63. logger.info("""
  64. 使用示例:
  65. # 全量刷新模式
  66. python main.py --provider minio --mode full-refresh
  67. # 排查补漏模式
  68. python main.py --provider minio --mode backfill
  69. # 增量更新模式(实时监听)
  70. python main.py --provider minio --mode listen
  71. # 使用 OSS 作为对象存储提供商
  72. python main.py --provider oss --mode listen
  73. """)
  74. logger.info("\n程序执行完成")
  75. except KeyboardInterrupt:
  76. logger.info("\n用户中断程序")
  77. except Exception as e:
  78. logger.error(f"程序运行出错: {e}")
  79. exit(1)
  80. if __name__ == "__main__":
  81. main()