問題描述
我正在使用使用 Python 和 Selenium 的 InstaPy.我按 Cron 啟動(dòng)腳本,但有時(shí)它會(huì)崩潰.所以它真的很不規(guī)則,有時(shí)它運(yùn)行得很好.我也已經(jīng)在 GitHub Repo 上發(fā)布過,但那里沒有得到答案,所以我現(xiàn)在在這里問是否有人知道原因.
I'm using InstaPy which use Python and Selenium. I start the script per Cron and from time to time it crashes. So it'r really irregular, sometimes it runs well through. I'v posted on GitHub Repo as well already but didn't get an answer there, so i'm asking here now if someone has an idea why.
這是一個(gè)數(shù)字海洋 ubuntu 服務(wù)器,我在無(wú)頭模式下使用它.驅(qū)動(dòng)程序版本在日志中可見.以下是錯(cuò)誤消息:
It's a digital ocean ubuntu server and i'm using it on headless mode. The driver version are visible on the log. here are error messages:
ERROR [2018-12-10 09:53:54] [user] Error occurred while deleting cookies from web browser!
b'Message: invalid session id
(Driver info: chromedriver=2.44.609551 (5d576e9a44fe4c5b6a07e568f1ebc753f1214634),platform=Linux 4.15.0-42-generic x86_64)
'
Traceback (most recent call last):
File "/root/InstaPy/instapy/util.py", line 1410, in smart_run
yield
File "./my_config.py", line 43, in <module>
session.follow_user_followers(['xxxx','xxxx','xxxx','xxxx'], amount=100, randomize=True, interact=True)
File "/root/InstaPy/instapy/instapy.py", line 2907, in follow_user_followers
self.logfolder)
File "/root/InstaPy/instapy/unfollow_util.py", line 883, in get_given_user_followers
channel, jumps, logger, logfolder)
File "/root/InstaPy/instapy/unfollow_util.py", line 722, in get_users_through_dialog
person_list = dialog_username_extractor(buttons)
File "/root/InstaPy/instapy/unfollow_util.py", line 747, in dialog_username_extractor
person_list.append(person.find_element_by_xpath("../../../*")
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webelement.py", line 351, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webelement.py", line 659, in find_element
{"using": by, "value": value})['value']
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webelement.py", line 633, in _execute
return self._parent.execute(command, params)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: session deleted because of page crash
from unknown error: cannot determine loading status
from tab crashed
(Session info: headless chrome=70.0.3538.110)
(Driver info: chromedriver=2.44.609551 (5d576e9a44fe4c5b6a07e568f1ebc753f1214634),platform=Linux 4.15.0-42-generic x86_64)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/root/InstaPy/instapy/instapy.py", line 3845, in end
self.browser.delete_all_cookies()
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 878, in delete_all_cookies
self.execute(Command.DELETE_ALL_COOKIES)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: chrome not reachable
(Session info: headless chrome=71.0.3578.80)
(Driver info: chromedriver=2.44.609551 (5d576e9a44fe4c5b6a07e568f1ebc753f1214634),platform=Linux 4.15.0-42-generic x86_64)
知道可能是什么原因以及如何解決嗎?
Any idea what the reason could be and how to solve it?
感謝您的意見.來(lái)自 http://treestones.ch/ 的人幫助了我.
Thanks for the inputs. And the guys from http://treestones.ch/ helped me out.
推薦答案
雖然你看到的錯(cuò)誤是:
Error occurred while deleting cookies from web browser!
b'Message: invalid session id
(Driver info: chromedriver=2.44.609551 (5d576e9a44fe4c5b6a07e568f1ebc753f1214634),platform=Linux 4.15.0-42-generic x86_64)
'
主要的例外是:
selenium.common.exceptions.WebDriverException: Message: unknown error: session deleted because of page crash
from unknown error: cannot determine loading status
from tab crashed
您的代碼試驗(yàn)會(huì)給我們一些線索,說(shuō)明出了什么問題.
Your code trials would have given us some clues what going wrong.
這個(gè)問題有多種解決方案.但是根據(jù) UnknownError: session deleted because page crashed from tab crashed 這個(gè)問題可以可通過以下任一方案解決:
There are diverse solution to this issue. However as per UnknownError: session deleted because of page crash from tab crashed this issue can be solved by either of the following solutions:
添加以下
chrome_options
:
chrome_options.add_argument('--no-sandbox')
由于 /dev/shm
太小,Chrome 似乎在某些頁(yè)面上的 Docker 容器中崩潰.所以你可能需要修復(fù)小的 /dev/shm
大小.
Chrome seem to crash in Docker containers on certain pages due to too small /dev/shm
. So you may have to fix the small /dev/shm
size.
一個(gè)例子:
sudo mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=512M tmpfs /dev/shm
如果你使用 -v/dev/shm:/dev/shm
選項(xiàng)來(lái)共享 host /dev/shm代碼>
另一種方法是將 chrome_options
添加為 --disable-dev-shm-usage
.這將強(qiáng)制 Chrome 使用 /tmp
目錄.這可能會(huì)減慢執(zhí)行速度,因?yàn)閷⑹褂么疟P而不是內(nèi)存.
Another way to make it work would be to add the chrome_options
as --disable-dev-shm-usage
. This will force Chrome to use the /tmp
directory instead. This may slow down the execution though since disk will be used instead of memory.
chrome_options.add_argument('--disable-dev-shm-usage')
from tab crashed 是 Chromium 團(tuán)隊(duì) 的 WIP(Work In Progress) 已經(jīng)有一段時(shí)間了,這與 Linux 有關(guān)試圖始終將/dev/shm 用于不可執(zhí)行的內(nèi)存.以下是參考:
from tab crashed was WIP(Work In Progress) with the Chromium Team for quite some time now which relates to Linux attempting to always use /dev/shm for non-executable memory. Here are the references :
- Linux:Chrome/Chromium SIGBUS/Aw,快!在小/dev/shm
- 當(dāng)/dev/shm 太小時(shí),Chrome 崩潰/加載失敗,并且位置不能被覆蓋
- 根據(jù) Comment61#Issue 736452 修復(fù)似乎已經(jīng)登陸 Chrome v65.0.3299.6
- Linux: Chrome/Chromium SIGBUS/Aw, Snap! on small /dev/shm
- Chrome crashes/fails to load when /dev/shm is too small, and location can't be overridden
- As per Comment61#Issue 736452 the fix seems to be have landed with Chrome v65.0.3299.6
您可以在以下位置找到一些相關(guān)討論:
You can find a couple of relevant discussions in:
- org.openqa.selenium.SessionNotCreatedException: 從 Jenkins CI 服務(wù)器執(zhí)行時(shí),會(huì)話未從選項(xiàng)卡崩潰錯(cuò)誤中創(chuàng)建異常
這篇關(guān)于未知錯(cuò)誤:由于未知錯(cuò)誤導(dǎo)致頁(yè)面崩潰,會(huì)話被刪除:無(wú)法從 ChromeDriver Selenium 崩潰的選項(xiàng)卡中確定加載狀態(tài)的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!