解决在docker 中部署 selenium 服务,服务需要启动时间的问题

问题描述

当我们在 docker 中启动了 selenium 服务的时候,有时候当我们的爬虫服务已经启动,但是 selenium 服务尚在准备阶段的时候,有可能会报出服务拒绝的异常。

解决思路

一种解决的方案是我们在调用服务之前强制睡眠一段时间,等待服务完全准备好再进行连接。这种方案的不优雅之处在于当我们有多个服务需要调度的时候,睡眠的时间间隔是很难确定和把控的。

另外的思路就是去请求 selenium 暴露出的提供服务状态的接口,在得到确定的响应回复之后即可知道该服务已经准备好了。

简单实现代码

import requests


def _check_selenium_status():
    """
    检查 selenium 服务端的状态
    :return:
    """
    while True:
        i = 0
        try:
            # 检查本地的 selenium 服务是否已经启动
            resp = requests.get("http://127.0.0.1:4444/wd/hub/status", timeout=0.5)
        except:
            i += 1
            if i > 10:
                raise
        else:
            print(resp.text)
            break


_check_selenium_status()

运行结果:
在这里插入图片描述

后记

疫情期间,在家办公。据说很多企业因此已经生存不下去了,内心惶惶自是难免,说不焦虑一定是假的。

同情、悲愤他人的遭遇,同时更感慨做一个普通人,能有平安顺遂的一生已经很不容易了。

我们应该是因为不如意的遭遇变得更加坚强,而不是就此消沉。

更新时间: 2020-02-03

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值