PythonとSeleniumを使用するInstaPyを使用しています。スクリプトはCronごとに起動し、時々クラッシュします。そのため、非常に不規則で、うまく実行されることもあります。私はGitHub Repoにも投稿されていますが、そこには回答がありませんでした。
これはDigital Ocean ubuntuサーバーで、ヘッドレスモードで使用しています。ドライバーのバージョンはログに表示されます。ここにエラーメッセージがあります:
ERROR [2018-12-10 09:53:54] [user] Error occurred while deleting cookies from web browser!
b'Message: invalid session id\n (Driver info: chromedriver=2.44.609551 (5d576e9a44fe4c5b6a07e568f1ebc753f1214634),platform=Linux 4.15.0-42-generic x86_64)\n'
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)
理由は何か、それをどのように解決するか考えていますか?
エラーは次のように見えますが:
Error occurred while deleting cookies from web browser!
b'Message: invalid session id\n (Driver info: chromedriver=2.44.609551 (5d576e9a44fe4c5b6a07e568f1ebc753f1214634),platform=Linux 4.15.0-42-generic x86_64)\n'
主な例外は次のとおりです。
Selenium.common.exceptions.WebDriverException: Message: unknown error: session deleted because of page crash
from unknown error: cannot determine loading status
from tab crashed
あなたのコードトライアルは、何がうまくいかないかの手がかりを私たちに与えたでしょう。
この問題にはさまざまな解決策があります。ただし、 nknownError:タブからのページクラッシュにより、セッションが削除されました この問題は、次のいずれかの解決策で解決できます。
次のchrome_options
を追加します。
chrome_options.add_argument('--no-sandbox')
/dev/shm
が小さすぎるため、特定のページのDockerコンテナでChromeがクラッシュするようです。したがって、小さい/dev/shm
サイズを修正する必要がある場合があります。
例:
Sudo mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=512M tmpfs /dev/shm
-v /dev/shm:/dev/shm
オプションを使用して共有する場合も機能しますHost/dev/shm
これを機能させる別の方法は、chrome_options
を--disable-dev-shm-usage
として追加することです。これにより、Chromeが代わりに/tmp
ディレクトリを使用するようになります。ただし、メモリの代わりにディスクが使用されるため、実行が遅くなる可能性があります。
chrome_options.add_argument('--disable-dev-shm-usage')
タブからクラッシュしましたWIP(Work In Progress)withChromium Teamはかなり長い間Linuxが常に/ dev/shmを非実行可能メモリに使用しようとしていることに関連しています。ここに参照があります:
あなたはいくつかの関連する議論を見つけることができます: