_const.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. class DecodeTaskConst:
  2. TASK_BATCH = 100
  3. SECONDS_PER_MINUTE = 60
  4. INNER_DECODE_LOCK_TIMEOUT_MINUTES = 30
  5. INNER_DECODE_LOCK_TIMEOUT_SECONDS = (
  6. SECONDS_PER_MINUTE * INNER_DECODE_LOCK_TIMEOUT_MINUTES
  7. )
  8. class InnerDecodeCreate:
  9. """内部文章解构任务创建:调度名、重试、并发、日志等"""
  10. SCHEDULER_TASK_NAME = "create_inner_articles_decode_task"
  11. MAX_RETRY_TIMES = 3
  12. DEFAULT_MAX_CONCURRENCY = 5
  13. DEFAULT_GOOD_READ_DATE = "20260401"
  14. ERROR_MESSAGE_MAX_CHARS = 500
  15. DUPLICATE_SKIP_REMOTE_TASK_ID = "existing_task"
  16. # MySQL INSERT IGNORE:0 表示未插入(重复等),1 表示插入 1 行
  17. INSERT_IGNORE_AFFECTED_NOOP = 0
  18. INSERT_IGNORE_AFFECTED_INSERTED = 1
  19. ASYNC_BATCH_DESCRIPTION = "Creating inner decode tasks"
  20. ASYNC_BATCH_UNIT = "task"
  21. ASYNC_BATCH_FAIL_FAST = False
  22. class InnerCreateState:
  23. """内部创建控制表字段初值与查询限制"""
  24. INITIAL_RETRY_COUNT = 0
  25. INITIAL_LOCKED_AT = 0
  26. LOCKED_AT_CLEARED = 0
  27. FETCH_STATE_ROW_LIMIT = 1
  28. class AdPlatformDecodeTask:
  29. """广告平台解构入队:占位 payload"""
  30. EMPTY_PAYLOAD_JSON = "{}"
  31. class AdPlatformDecodeBatch:
  32. """广告平台批量创建解构任务:进度条文案"""
  33. TQDM_DESCRIPTION = "Creating decode tasks"
  34. class HttpDecodeCreateRetry:
  35. """解构创建 HTTP 调用 tenacity 退避参数(秒)"""
  36. MIN_DELAY_SECONDS = 1
  37. MAX_DELAY_SECONDS = 4
  38. class LogTaskKey:
  39. """广告平台创建解构相关日志 task 字段"""
  40. CREATE_SINGLE = "create_decode_task"
  41. CREATE_BATCH = "create_tasks"
  42. RECORD_QUEUE = "record_decode_task"
  43. class TaskStatus:
  44. # 任务状态
  45. INIT = 0
  46. PROCESSING = 1
  47. SUCCESS = 2
  48. FAILED = 99
  49. class ExtractStatus(TaskStatus): ...
  50. class DecodeStatus:
  51. # 解构结果状态
  52. PENDING = 0
  53. RUNNING = 1
  54. SUCCESS = 2
  55. FAILED = 3
  56. class BusinessScene:
  57. # 业务场景
  58. POINT_PICK = 0
  59. CREATE = 1
  60. MAKE = 2
  61. class ContentType:
  62. # 内容类型
  63. LONG_ARTICLE = 1
  64. PICTURE_TEXT = 2
  65. VIDEO = 3
  66. TITLE_COVER = 4
  67. class SourceType:
  68. AD_PLATFORM = 1
  69. INNER = 2
  70. class TaskType:
  71. """
  72. 解构任务类型
  73. 1: 源文章和图集
  74. 2: 发文标题和封面
  75. 3: 首个小程序卡片封面标题
  76. """
  77. SOURCE_IMAGES_TEXT = 1
  78. PUBLISH_TITLE_COVER = 2
  79. MINI_TITLE_CARD = 3
  80. class ProduceModuleType:
  81. COVER = 1
  82. IMAGE = 2
  83. TITLE = 3
  84. CONTENT = 4
  85. SUMMARY = 18
  86. class RequestDecode:
  87. SUCCESS = 0
  88. __all__ = ["DecodeTaskConst"]