J'utilise InstaPy qui utilise Python et Selenium. Je démarre le script par Cron et de temps en temps il plante. Donc, c'est vraiment irrégulier, parfois il fonctionne bien. I'v également posté sur GitHub Repo mais je n'ai pas eu de réponse là-bas, donc je demande ici maintenant si quelqu'un a une idée de pourquoi.
C'est un serveur ubuntu de Digital Ocean et je l'utilise en mode sans tête. La version du pilote est visible sur le journal. voici les messages d'erreur:
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)
Une idée de la raison et comment la résoudre?
Bien que vous voyez l'erreur comme:
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'
La principale exception est:
Selenium.common.exceptions.WebDriverException: Message: unknown error: session deleted because of page crash
from unknown error: cannot determine loading status
from tab crashed
Vos essais de code nous auraient donné des indices sur ce qui ne va pas.
Il existe différentes solutions à ce problème. Cependant, selon nknownError: session supprimée en raison du crash de la page de l'onglet planté ce problème peut être résolu par l'une des solutions suivantes:
Ajoutez ce qui suit chrome_options
:
chrome_options.add_argument('--no-sandbox')
Chrome semble planter dans les conteneurs Docker sur certaines pages en raison d'un trop petit /dev/shm
. Vous devrez donc peut-être corriger le petit /dev/shm
Taille.
Un exemple:
Sudo mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=512M tmpfs /dev/shm
Cela fonctionne également si vous utilisez -v /dev/shm:/dev/shm
option de partage Hôte/dev/shm
Une autre façon de le faire fonctionner serait d'ajouter le chrome_options
as --disable-dev-shm-usage
. Cela forcera Chrome à utiliser le /tmp
répertoire à la place. Cela peut cependant ralentir l'exécution car le disque sera utilisé à la place de la mémoire.
chrome_options.add_argument('--disable-dev-shm-usage')
de l'onglet s'est écrasé était WIP ( Work In Progress) avec le Chromium Team depuis un certain temps maintenant qui concerne Linux essayant de toujours utiliser/dev/shm pour la mémoire non exécutable. Voici les références:
Vous pouvez trouver quelques discussions pertinentes dans: