add cron task

This commit is contained in:
qiaofeng1227 2023-06-17 15:45:16 +08:00
parent d52812a9c9
commit 67c911c70b
4 changed files with 54 additions and 6 deletions

View file

@ -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

View file

@ -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'

View file

@ -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:

View file

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