我用flask写了一个接口。使用这个接口的时候,可以启动selenium访问网页,获取网页的信息。
我希望不用每次访问的时候,都初始化一个driver(这样太浪费时间)。因此我写成了每个请求过来,就打开一个新的窗口,这样就可以不用初始化了。
我在本地运行app.py的时候,可以实现这个功能。但是部署的时候(apache,mod_wsgi,flask)就不行了,每次请求过来,它就重新初始化一个driver。(url不变,多次访问也会实现不初始化driver,只打开新窗口的功能;但是url不同的时候,就不能实现预期的功能。)
我曾想过是不是由于每次访问的时候,都重新运行一次app.py。我对mod_wsgi不是很熟。
然后也试过将driver对象保存在应用上下文和g里面,但是也是不行的。每次请求的g都不一样。
今天我想过用redis,pickle保存driver对象,这个似乎可行。问题是,pickle.dumps(driver)的时候,报错了:
TypeError: can't pickle _thread.lock objects
唉,这个问题困扰我好几天了,有人能帮助一下我吗?
如果是单线程,就把driver设置成全局变量就好了啊