|
@@ -6,13 +6,17 @@ import asyncio
|
|
|
import datetime
|
|
|
import traceback
|
|
|
|
|
|
+import threading
|
|
|
+from concurrent.futures import ThreadPoolExecutor, as_completed
|
|
|
+
|
|
|
from tasks.history_task import historyContentIdTask
|
|
|
from applications.db import AsyncMySQLClient
|
|
|
from applications.log import logging
|
|
|
from applications.feishu import bot
|
|
|
+from applications.config.const import HistoryContentIdTaskConst
|
|
|
|
|
|
|
|
|
-async def main():
|
|
|
+async def do_job(publish_flag):
|
|
|
"""
|
|
|
main job
|
|
|
:return:
|
|
@@ -45,7 +49,7 @@ async def main():
|
|
|
}
|
|
|
)
|
|
|
try:
|
|
|
- history_content_id_task = historyContentIdTask(async_mysql_pool)
|
|
|
+ history_content_id_task = historyContentIdTask(async_mysql_pool, publish_flag)
|
|
|
except Exception as e:
|
|
|
logging(
|
|
|
code="history0003",
|
|
@@ -61,13 +65,45 @@ async def main():
|
|
|
await history_content_id_task.deal()
|
|
|
|
|
|
|
|
|
-if __name__ == '__main__':
|
|
|
- while True:
|
|
|
- asyncio.run(main())
|
|
|
+def run_thread(publish_flag, sleep_seconds, stop_flag):
|
|
|
+ """
|
|
|
+ 执行进程
|
|
|
+ """
|
|
|
+ while not stop_flag.is_set():
|
|
|
+ loop = asyncio.new_event_loop()
|
|
|
+ asyncio.set_event_loop(loop)
|
|
|
+ loop.run_until_complete(do_job(publish_flag=publish_flag))
|
|
|
+ loop.close()
|
|
|
now_str = datetime.datetime.now().__str__()
|
|
|
- print("{} 请求执行完成, 等待60s".format(now_str))
|
|
|
logging(
|
|
|
code="history0004",
|
|
|
- info="History task finished"
|
|
|
+ info="History task finished",
|
|
|
+ function="run_thread"
|
|
|
)
|
|
|
- time.sleep(60)
|
|
|
+ print("Task{}--{} 请求执行完成, 等待{}s".format(publish_flag, now_str, sleep_seconds))
|
|
|
+ time.sleep(sleep_seconds)
|
|
|
+
|
|
|
+
|
|
|
+def main():
|
|
|
+ """
|
|
|
+ main function
|
|
|
+ """
|
|
|
+ const = HistoryContentIdTaskConst()
|
|
|
+ stop_event = threading.Event()
|
|
|
+
|
|
|
+ # 启动两个线程,分别执行两个函数
|
|
|
+ with ThreadPoolExecutor(max_workers=2) as executor:
|
|
|
+ futures = [
|
|
|
+ executor.submit(run_thread, const.NEED_PUBLISH, const.NEED_PUBLISH_WAIT_TIME, stop_event),
|
|
|
+ executor.submit(run_thread, const.DO_NOT_NEED_PUBLISH, const.DO_NOT_NEED_PUBLISH_WAIT_TIME, stop_event)
|
|
|
+ ]
|
|
|
+ try:
|
|
|
+ for future in as_completed(futures):
|
|
|
+ future.result()
|
|
|
+ except KeyboardInterrupt:
|
|
|
+ print("Stopping all threads...")
|
|
|
+ stop_event.set()
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == '__main__':
|
|
|
+ main()
|