Quellcode durchsuchen

微信广告合作平台 --- 文章发布

luojunhui vor 13 Stunden
Ursprung
Commit
6269d819dc

+ 5 - 1
app/domains/cold_start_tasks/__init__.py

@@ -1,4 +1,8 @@
 from .article_pool_cold_start import ArticlePoolColdStart
+from .ad_platform_articles import AdPlatformArticlePublishTask
 
 
-__all__ = ["ArticlePoolColdStart"]
+__all__ = [
+    "ArticlePoolColdStart",
+    "AdPlatformArticlePublishTask",
+]

+ 1 - 1
app/domains/cold_start_tasks/ad_platform_articles/__init__.py

@@ -1 +1 @@
-from .entrance import AdPlatformArticleColdStartTask
+from .entrance import AdPlatformArticlePublishTask

+ 1 - 1
app/domains/cold_start_tasks/ad_platform_articles/_const.py

@@ -1,4 +1,4 @@
-class AdPlatformArticleColdStartConst:
+class AdPlatformArticlePublishConst:
     PLAN_LIST = ["互选平台-军事", "互选平台-时事", "互选平台-祝福"]
 
     PLAN_ID_MAP = {

+ 3 - 3
app/domains/cold_start_tasks/ad_platform_articles/_mapper.py

@@ -1,10 +1,10 @@
 from app.core.database import DatabaseManager
 from app.infra.internal import insert_crawler_plan
 
-from ._const import AdPlatformArticleColdStartConst
+from ._const import AdPlatformArticlePublishConst
 
 
-class AdPlatformArticleColdStartMapper(AdPlatformArticleColdStartConst):
+class AdPlatformArticlePublishMapper(AdPlatformArticlePublishConst):
     def __init__(self, pool: DatabaseManager):
         self.pool = pool
 
@@ -43,4 +43,4 @@ class AdPlatformArticleColdStartMapper(AdPlatformArticleColdStartConst):
         return await insert_crawler_plan(pool=self.pool, data_tuple=data_tuple)
 
 
-__all__ = ["AdPlatformArticleColdStartMapper"]
+__all__ = ["AdPlatformArticlePublishMapper"]

+ 10 - 4
app/domains/cold_start_tasks/ad_platform_articles/_utils.py

@@ -3,19 +3,19 @@ import datetime
 
 from typing import List, Dict
 
+from app.infra.external import feishu_robot
 from app.infra.internal import auto_create_crawler_task
 from app.infra.internal import auto_bind_crawler_task_to_generate_task
 
 
-from ._const import AdPlatformArticleColdStartConst
+from ._const import AdPlatformArticlePublishConst
 
 
-class AdPlatformArticleColdStartUtils(AdPlatformArticleColdStartConst):
+class AdPlatformArticlePublishUtils(AdPlatformArticlePublishConst):
     @staticmethod
     async def create_crawler_plan(category: str, article_list: List[Dict]):
-
         article_cnt = len(article_list)
-        date_string = datetime.date.today().__str__()
+        date_string = datetime.datetime.today().strftime("%Y-%m-%d")
         plan_name = f"冷启动-{category}-{date_string}-{article_cnt}"
         url_list = [i["article_link"] for i in article_list]
 
@@ -52,3 +52,9 @@ class AdPlatformArticleColdStartUtils(AdPlatformArticleColdStartConst):
         crawler_plan_name = plan_response["data"]["name"]
 
         return tuple([crawler_plan_id, crawler_plan_name, create_timestamp])
+
+    @staticmethod
+    async def alert(title: str, detail: Dict):
+        return await feishu_robot.bot(
+            title=f"互相平台文章冷启动任务-{title}", detail=detail, mention=False
+        )

+ 14 - 17
app/domains/cold_start_tasks/ad_platform_articles/entrance.py

@@ -2,17 +2,16 @@ import traceback
 
 from app.core.database import DatabaseManager
 from app.core.observability import LogService
-from app.infra.external import feishu_robot
 
-from ._const import AdPlatformArticleColdStartConst
-from ._utils import AdPlatformArticleColdStartUtils
-from ._mapper import AdPlatformArticleColdStartMapper
+from ._const import AdPlatformArticlePublishConst
+from ._utils import AdPlatformArticlePublishUtils
+from ._mapper import AdPlatformArticlePublishMapper
 
 
-class AdPlatformArticleColdStartTask(AdPlatformArticleColdStartConst):
+class AdPlatformArticlePublishTask(AdPlatformArticlePublishConst):
     def __init__(self, pool: DatabaseManager, log_service: LogService):
-        self.mapper = AdPlatformArticleColdStartMapper(pool)
-        self.tool = AdPlatformArticleColdStartUtils()
+        self.mapper = AdPlatformArticlePublishMapper(pool)
+        self.tool = AdPlatformArticlePublishUtils()
         self.log_service = log_service
 
     async def _process_single_plan(self, plan: str):
@@ -40,7 +39,6 @@ class AdPlatformArticleColdStartTask(AdPlatformArticleColdStartConst):
             plan_response = await self.tool.create_crawler_plan(
                 category=category, article_list=candidate_articles
             )
-            print(plan_response)
 
             # save to db
             plan_info = self.tool.process_plan_info(plan_response)
@@ -76,7 +74,7 @@ class AdPlatformArticleColdStartTask(AdPlatformArticleColdStartConst):
                     await self.log_service.log(
                         contents={
                             "task": "ad_platform_article_cold_start",
-                            "status": "error",
+                            "status": "fail",
                             "message": "回滚冷启状态失败",
                             "rollback_error": str(rollback_err),
                         }
@@ -84,22 +82,21 @@ class AdPlatformArticleColdStartTask(AdPlatformArticleColdStartConst):
             await self.log_service.log(
                 contents={
                     "task": "ad_platform_article_cold_start",
-                    "status": "error",
+                    "status": "fail",
                     "plan": plan,
                     "category": category,
                     "error": str(e),
                     "traceback": traceback.format_exc(),
                 }
             )
-            await feishu_robot.bot(
-                title="互选平台文章冷启动任务异常",
+            await self.tool.alert(
+                title="冷启动任务异常",
                 detail={
                     "plan": plan,
                     "category": category,
                     "error": str(e),
                     "traceback": traceback.format_exc(),
                 },
-                mention=False,
             )
 
     async def deal(self):
@@ -107,25 +104,25 @@ class AdPlatformArticleColdStartTask(AdPlatformArticleColdStartConst):
         try:
             for plan in self.PLAN_LIST:
                 await self._process_single_plan(plan)
+
         except Exception as e:
             await self.log_service.log(
                 contents={
                     "task": "ad_platform_article_cold_start",
-                    "status": "error",
+                    "status": "fail",
                     "message": "deal 入口异常",
                     "error": str(e),
                     "traceback": traceback.format_exc(),
                 }
             )
-            await feishu_robot.bot(
+            await self.tool.alert(
                 title="互选平台文章冷启动任务-入口异常",
                 detail={
                     "error": str(e),
                     "traceback": traceback.format_exc(),
                 },
-                mention=False,
             )
             raise
 
 
-__all__ = ["AdPlatformArticleColdStartTask"]
+__all__ = ["AdPlatformArticlePublishTask"]

+ 11 - 0
app/jobs/task_handler.py

@@ -12,6 +12,8 @@ from app.domains.analysis_task import RateLimitedArticleFilter
 from app.domains.algorithm_tasks import AccountCategoryAnalysis
 
 from app.domains.cold_start_tasks import ArticlePoolColdStart
+from app.domains.cold_start_tasks import AdPlatformArticlePublishTask
+
 
 from app.domains.crawler_tasks import CrawlerToutiao
 from app.domains.crawler_tasks import WeixinAccountManager
@@ -332,6 +334,15 @@ class TaskHandler:
         )
         return TaskStatus.SUCCESS
 
+    @register("ad_platform_article_publish")
+    async def _ad_platform_article_publish(self) -> int:
+        """文章池冷启动"""
+        task = AdPlatformArticlePublishTask(
+            self.db_client, self.log_client
+        )
+        await task.deal()
+        return TaskStatus.SUCCESS
+
     @register("candidate_account_quality_analysis")
     async def _candidate_account_quality_score_handler(self) -> int:
         """候选账号质量分析"""