浏览代码

add cron task

qiaofeng1227 2 年之前
父节点
当前提交
67c911c70b
共有 4 个文件被更改,包括 54 次插入6 次删除
  1. 1 1
      appmanage/Dockerfile
  2. 22 0
      appmanage/api/service/manage.py
  3. 30 5
      appmanage/api/v1/routers/apps.py
  4. 1 0
      appmanage/requirements.txt

+ 1 - 1
appmanage/Dockerfile

@@ -10,7 +10,7 @@ COPY static ./static
 COPY requirements.txt main.py  ./
 COPY requirements.txt main.py  ./
 RUN apt update
 RUN apt update
 
 
-# Install supervisord
+# Install supervisords
 RUN apt install -y supervisor
 RUN apt install -y supervisor
 COPY config/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
 COPY config/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
 COPY config/cmd.sh /cmd.sh
 COPY config/cmd.sh /cmd.sh

+ 22 - 0
appmanage/api/service/manage.py

@@ -21,6 +21,8 @@ from redis import Redis
 from rq import Queue, Worker, Connection
 from rq import Queue, Worker, Connection
 from rq.registry import StartedJobRegistry, FinishedJobRegistry, DeferredJobRegistry, FailedJobRegistry, ScheduledJobRegistry, CanceledJobRegistry
 from rq.registry import StartedJobRegistry, FinishedJobRegistry, DeferredJobRegistry, FailedJobRegistry, ScheduledJobRegistry, CanceledJobRegistry
 from api.exception.command_exception import CommandException
 from api.exception.command_exception import CommandException
+from apscheduler.schedulers.background import BackgroundScheduler
+from apscheduler.triggers.interval import IntervalTrigger,CronTrigger
 
 
 # 指定 Redis 容器的主机名和端口
 # 指定 Redis 容器的主机名和端口
 redis_conn = Redis(host='websoft9-redis', port=6379)
 redis_conn = Redis(host='websoft9-redis', port=6379)
@@ -28,6 +30,15 @@ redis_conn = Redis(host='websoft9-redis', port=6379)
 # 使用指定的 Redis 连接创建 RQ 队列
 # 使用指定的 Redis 连接创建 RQ 队列
 q = Queue(connection=redis_conn, default_timeout=3600)
 q = Queue(connection=redis_conn, default_timeout=3600)
 
 
+def auto_update():
+    shell_execute.execute_command_output_all("wget https://websoft9.github.io/StackHub/install/update_appstore.sh && bash update_appstore.sh 1>/dev/null 2>&1")
+
+def test():
+    shell_execute.execute_command_output_all("echo 1111 >> /tmp/xuweitest")
+
+scheduler = BackgroundScheduler()
+#scheduler.add_job(auto_update, CronTrigger(hour=1, minute=0))
+scheduler.add_job(test, IntervalTrigger(minutes=1))
 
 
 # 获取github文件内容
 # 获取github文件内容
 def get_github_content(repo, path):
 def get_github_content(repo, path):
@@ -38,6 +49,17 @@ def get_github_content(repo, path):
     contents = response.text
     contents = response.text
     return contents
     return contents
 
 
+def AppAutoUpdate(auto_update):
+    
+    if auto_update:
+        scheduler.start()  
+        return "软件商店自动更新已经开启"
+    else:
+        scheduler.shutdown()
+        return "软件商店自动更新已经关闭"
+
+
+
 # 更新软件商店
 # 更新软件商店
 def AppStoreUpdate():
 def AppStoreUpdate():
     local_path = '/data/library/install/version.json'
     local_path = '/data/library/install/version.json'

+ 30 - 5
appmanage/api/v1/routers/apps.py

@@ -50,21 +50,23 @@ info = "  app_id:应用ID,\n\n  app_name:应用名,\n\n"
 
 
 domain = "  Domain_set:{\n\n" \
 domain = "  Domain_set:{\n\n" \
          "    domains:域名列表\n\n" \
          "    domains:域名列表\n\n" \
-         "    default_domain:默认域名\n\n  }\n\n}"
+         "    default_domain:默认域名\n\n  }\n\n}\n\n"
 
 
 update = "  Update_content: {\n\n" \
 update = "  Update_content: {\n\n" \
          "    version: 最新版本\n\n" \
          "    version: 最新版本\n\n" \
          "    date: 更新日期\n\n" \
          "    date: 更新日期\n\n" \
-         "    content: 更新内容\n\n  }\n\n}"
+         "    content: 更新内容\n\n  }\n\n}\n\n"
 
 
-appstore_update = "  Update_content: [] 更新内容\n\n  \n\n}"
+appstore_update = "  Update_content: [] 更新内容\n\n  \n\n}\n\n"
+auto = "  auto_update: 目前的自动更新状态\n\n  \n\n}\n\n"
 
 
 rd = rd_s + rd_m + rd_e
 rd = rd_s + rd_m + rd_e
 rd_info = rd_s + info + rd_e
 rd_info = rd_s + info + rd_e
 rd_status = rd_s + rd_status + rd_e
 rd_status = rd_s + rd_status + rd_e
 rd_domain = rd_s + domain + rd_e
 rd_domain = rd_s + domain + rd_e
 rd_update_list = rd_s + update + rd_e
 rd_update_list = rd_s + update + rd_e
-
+rd_appstore = rd_s + appstore_update + rd_e
+rd_auto_list = rd_s + auto + rd_e
 
 
 @router.api_route("/AppStatus", methods=["GET", "POST"], summary="获取指定APP的信息",
 @router.api_route("/AppStatus", methods=["GET", "POST"], summary="获取指定APP的信息",
                   response_description=rd_status,
                   response_description=rd_status,
@@ -374,7 +376,7 @@ def AppUpdateList(request: Request):
 
 
     return response
     return response
 
 
-@router.api_route("/AppStoreUpdate", methods=["GET", "POST"], summary="更新软件商店", response_model=Response, response_description=rd_update_list)
+@router.api_route("/AppStoreUpdate", methods=["GET", "POST"], summary="更新软件商店", response_model=Response, response_description=rd_appstore)
 def AppStoreUpdate(request: Request):
 def AppStoreUpdate(request: Request):
 
 
     try:
     try:
@@ -398,6 +400,29 @@ def AppStoreUpdate(request: Request):
 
 
     return response
     return response
 
 
+@router.api_route("/AppAutoUpdate", methods=["GET", "POST"], summary="软件商店自动更新", response_model=Response, response_description=rd_auto_list)
+def AppAutoUpdate(request: Request,auto_update: Optional[bool] = Query(default=False, description="自动更新标志")):
+
+    try:
+        myLogger.info_logger("Receive request: /AppAutoUpdate")
+        get_headers(request)
+        ret = {}
+        ret['ResponseData'] = {}
+        ret['ResponseData']['auto_update'] = manage.AppAutoUpdate(auto_update)
+        response = JSONResponse(content=ret)
+    except CommandException as ce:
+        ret = {}
+        ret['ResponseData'] = {}
+        ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
+        response = JSONResponse(content=ret)
+    except Exception as e:
+        ret = {}
+        ret['ResponseData'] = {}
+        ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
+        response = JSONResponse(content=ret)
+
+    return response
+
 def get_headers(request):
 def get_headers(request):
     headers = request.headers
     headers = request.headers
     try:
     try:

+ 1 - 0
appmanage/requirements.txt

@@ -1,6 +1,7 @@
 fastapi
 fastapi
 uvicorn
 uvicorn
 rq
 rq
+apscheduler
 docker
 docker
 psutil
 psutil
 gunicorn
 gunicorn