mirror of
https://git.oceanpay.cc/danial/kami_itunes_third_api.git
synced 2025-12-18 22:20:08 +00:00
refactor(deploy): 重构部署流程并添加容器锁机制
- 修改 Docker Compose 配置,简化网络设置 - 新增 Docker 入口脚本,实现容器锁机制 - 更新 Dockerfile,使用新的入口脚本 - 添加 Makefile,简化部署流程 - 优化 Python 脚本,去除冗余的循环结构
This commit is contained in:
3
Makefile
Normal file
3
Makefile
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
deploy:
|
||||||
|
@echo "Deploying to Docker Compose"
|
||||||
|
VERSION=0.1 DIR=123 docker compose -f ./deploy/docker-compose.yml up -d
|
||||||
@@ -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 install -r requirements.txt --no-cache-dir && \
|
||||||
pip cache purge
|
pip cache purge
|
||||||
|
|
||||||
CMD ["python","-u", "main.py"]
|
CMD ["./deploy/docker-entrypoint.sh"]
|
||||||
@@ -3,13 +3,7 @@ services:
|
|||||||
container_name: kami_redeem_itunes
|
container_name: kami_redeem_itunes
|
||||||
image: itunes_kami:latest
|
image: itunes_kami:latest
|
||||||
build:
|
build:
|
||||||
context: ..
|
context: ../.
|
||||||
dockerfile: ./deploy/Dockerfile
|
dockerfile: ./deploy/Dockerfile
|
||||||
networks:
|
|
||||||
- 1panel-network
|
|
||||||
labels:
|
labels:
|
||||||
createdBy: Developer
|
createdBy: Developer
|
||||||
|
|
||||||
networks:
|
|
||||||
1panel-network:
|
|
||||||
external: true
|
|
||||||
|
|||||||
15
deploy/docker-entrypoint.sh
Normal file
15
deploy/docker-entrypoint.sh
Normal file
@@ -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
|
||||||
@@ -181,21 +181,18 @@ def run_task():
|
|||||||
"""
|
"""
|
||||||
# 注册信号处理程序
|
# 注册信号处理程序
|
||||||
has_been_console = False
|
has_been_console = False
|
||||||
while True:
|
master_node_service = MasterNodeService()
|
||||||
master_node_service = MasterNodeService()
|
# 1s获取两次订单
|
||||||
# 1s获取两次订单
|
master_order = master_node_service.query_order()
|
||||||
master_order = master_node_service.query_order()
|
if master_order.orderNo != "":
|
||||||
if master_order.orderNo != "":
|
logger.info(f"当前订单:{master_order}")
|
||||||
logger.info(f"当前订单:{master_order}")
|
run_redeem_task(master_order, master_node_service)
|
||||||
run_redeem_task(master_order, master_node_service)
|
# 10分钟打印一次信息
|
||||||
# 10分钟打印一次信息
|
if datetime.now().second % 10 == 0 and not has_been_console:
|
||||||
if datetime.now().second % 10 == 0 and not has_been_console:
|
has_been_console = True
|
||||||
has_been_console = True
|
print(f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\t暂时没有订单")
|
||||||
print(f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\t暂时没有订单")
|
if datetime.now().second % 10 != 0 and has_been_console:
|
||||||
if datetime.now().second % 10 != 0 and has_been_console:
|
has_been_console = False
|
||||||
has_been_console = False
|
|
||||||
time.sleep(1)
|
|
||||||
|
|
||||||
|
|
||||||
def run():
|
def run():
|
||||||
# signal.signal(signal.SIGINT, signal_handler)
|
# signal.signal(signal.SIGINT, signal_handler)
|
||||||
@@ -215,4 +212,3 @@ def run():
|
|||||||
process.close()
|
process.close()
|
||||||
process = Process(target=run_task, args=(), daemon=True)
|
process = Process(target=run_task, args=(), daemon=True)
|
||||||
process.start()
|
process.start()
|
||||||
time.sleep(5)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user