You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Pipeline中暂停执行若干秒以等待MariaDB启动?

解决Azure Pipeline中MariaDB启动延迟导致的连接问题

方法1:添加固定延迟(简单直接)

可以直接在docker run命令后通过Bash的sleep命令设置等待时间,给数据库足够的启动时间,示例如下:

docker pull <some_azure_repository>/databasedump:<tag_number>
docker run -d --publish 3306:3306 <some_azure_repository>/databasedump:<tag_number>
# 等待数据库完成启动,可根据实际情况调整秒数
sleep 30

你可以根据镜像的实际启动时长,调整sleep后的数字,比如改成50秒等。

方法2:等待数据库就绪后再执行测试(更可靠)

固定延迟可能出现等待时间不足或浪费资源的情况,推荐用脚本检测数据库是否能正常连接,直到连接成功再触发测试:

用MySQL客户端检测(需环境已安装mysql-client)

docker pull <some_azure_repository>/databasedump:<tag_number>
docker run -d --name mariadb-test --publish 3306:3306 <some_azure_repository>/databasedump:<tag_number>

# 循环检测数据库连接状态,每5秒尝试一次
until mysql -h localhost -u <你的数据库用户名> -p<你的数据库密码> -e "SELECT 1"; do
  echo "数据库尚未就绪,等待中..."
  sleep 5
done

用Python脚本检测(适配你的Python测试环境)

如果环境没装MySQL客户端,可利用Python编写检测脚本(你的测试环境已有Python):

import time
import mysql.connector
from mysql.connector.errors import OperationalError

def wait_for_database():
    while True:
        try:
            # 尝试连接数据库
            conn = mysql.connector.connect(
                host="localhost",
                user="<你的数据库用户名>",
                password="<你的数据库密码>"
            )
            conn.close()
            print("数据库已就绪,开始执行测试")
            break
        except OperationalError:
            print("数据库启动中,等待5秒后重试...")
            time.sleep(5)

if __name__ == "__main__":
    wait_for_database()

将上述代码保存为wait_for_db.py,在Pipeline中执行:

docker pull <some_azure_repository>/databasedump:<tag_number>
docker run -d --publish 3306:3306 <some_azure_repository>/databasedump:<tag_number>
python wait_for_db.py

内容的提问来源于stack exchange,提问作者Ivajlo Iliev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 08:45:26