解决在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

发布了291 篇原创文章 · 获赞 104 · 访问量 41万+

猜你喜欢

转载自blog.csdn.net/Enjolras_fuu/article/details/104152152
今日推荐