diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..558163a --- /dev/null +++ b/Makefile @@ -0,0 +1,3 @@ +deploy: + @echo "Deploying to Docker Compose" + VERSION=0.1 DIR=123 docker compose -f ./deploy/docker-compose.yml up -d \ No newline at end of file diff --git a/deploy/Dockerfile b/deploy/Dockerfile index 70475fe..239b176 100644 --- a/deploy/Dockerfile +++ b/deploy/Dockerfile @@ -15,4 +15,4 @@ RUN pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/we pip install -r requirements.txt --no-cache-dir && \ pip cache purge -CMD ["python","-u", "main.py"] \ No newline at end of file +CMD ["./deploy/docker-entrypoint.sh"] \ No newline at end of file diff --git a/deploy/docker-compose-local.yml b/deploy/docker-compose-local.yml index 58ef461..ec3448f 100644 --- a/deploy/docker-compose-local.yml +++ b/deploy/docker-compose-local.yml @@ -3,13 +3,7 @@ services: container_name: kami_redeem_itunes image: itunes_kami:latest build: - context: .. + context: ../. dockerfile: ./deploy/Dockerfile - networks: - - 1panel-network labels: createdBy: Developer - -networks: - 1panel-network: - external: true diff --git a/deploy/docker-entrypoint.sh b/deploy/docker-entrypoint.sh new file mode 100644 index 0000000..56e2d31 --- /dev/null +++ b/deploy/docker-entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# 定义锁文件路径 +LOCKFILE="/tmp/my_python_task.lock" + +while true; do + # 使用 flock -n 尝试获取锁,如果无法获取则立即退出 + ( + echo "$(date): Running Python script..." + flock -n 200 || exit 1 + # 如果成功获取锁,则运行 Python 脚本 + python -u main.py + ) 200>$LOCKFILE + sleep 5 +done \ No newline at end of file diff --git a/src/cmd/scripts.py b/src/cmd/scripts.py index 662764d..597658b 100644 --- a/src/cmd/scripts.py +++ b/src/cmd/scripts.py @@ -181,21 +181,18 @@ def run_task(): """ # 注册信号处理程序 has_been_console = False - while True: - master_node_service = MasterNodeService() - # 1s获取两次订单 - master_order = master_node_service.query_order() - if master_order.orderNo != "": - logger.info(f"当前订单:{master_order}") - run_redeem_task(master_order, master_node_service) - # 10分钟打印一次信息 - if datetime.now().second % 10 == 0 and not has_been_console: - has_been_console = True - print(f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\t暂时没有订单") - if datetime.now().second % 10 != 0 and has_been_console: - has_been_console = False - time.sleep(1) - + master_node_service = MasterNodeService() + # 1s获取两次订单 + master_order = master_node_service.query_order() + if master_order.orderNo != "": + logger.info(f"当前订单:{master_order}") + run_redeem_task(master_order, master_node_service) + # 10分钟打印一次信息 + if datetime.now().second % 10 == 0 and not has_been_console: + has_been_console = True + print(f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\t暂时没有订单") + if datetime.now().second % 10 != 0 and has_been_console: + has_been_console = False def run(): # signal.signal(signal.SIGINT, signal_handler) @@ -215,4 +212,3 @@ def run(): process.close() process = Process(target=run_task, args=(), daemon=True) process.start() - time.sleep(5)