Google App Engine 抛出错误指向我对 selenium 使用 chrome 和 chrome 驱动程序

Google App Engine throwing error pointing to my use of chrome and chrome driver for selenium

我正在使用 selenium 并具有以下代码,我知道我得到的 Traceback 指向以下代码:

driverOptions = webdriver.ChromeOptions()
driverOptions.binary_location = 'Application_2/chrome.exe'
driverOptions.add_argument("--headless")
driver = webdriver.Chrome('Application_2/chromedriver_win32/chromedriver.exe', 
chrome_options=driverOptions)

然而,当我尝试部署到 Google App Engine 时,出现以下错误:

Updating service [default] (this may take several minutes)...failed.
ERROR: (gcloud.app.deploy) Error Response: [9] An internal error occurred while processing 
task /app-engine-flex/flex_await_healthy/flex_await_healthy>2021-10-29T09:56:17.969Z1225.he.0: 
[2021-10-29 09:57:41 +0000] [1] [INFO] Starting gunicorn 20.1.0
[2021-10-29 09:57:41 +0000] [1] [INFO] Listening at: http://0.0.0.0:8080 (1)
[2021-10-29 09:57:41 +0000] [1] [INFO] Using worker: sync
[2021-10-29 09:57:41 +0000] [11] [INFO] Booting worker with pid: 11
[2021-10-29 09:57:44 +0000] [11] [ERROR] Exception in worker process
Traceback (most recent call last):
File "/env/lib/python3.6/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
  worker.init_process()
File "/env/lib/python3.6/site-packages/gunicorn/workers/base.py", line 134, in init_process
  self.load_wsgi()
File "/env/lib/python3.6/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
  self.wsgi = self.app.wsgi()
File "/env/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
  self.callable = self.load()
File "/env/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
  return self.load_wsgiapp()
File "/env/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
  return util.import_app(self.app_uri)
File "/env/lib/python3.6/site-packages/gunicorn/util.py", line 359, in import_app
  mod = importlib.import_module(module)
File "/opt/python3.6/lib/python3.6/importlib/__init__.py", line 126, in import_module
  return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/vmagent/app/main.py", line 2, in <module>
  import file_upload
File "/home/vmagent/app/file_upload.py", line 5, in <module>
  import prod_class
File "/home/vmagent/app/prod_class.py", line 17, in <module>
  driver = webdriver.Chrome('Application_2/chromedriver_win32/chromedriver.exe', 
chrome_options=driverOptions)
  File "/env/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 73, in 
__init__
self.service.start()
File "/env/lib/python3.6/site-packages/selenium/webdriver/common/service.py", line 76, in 
start
 stdin=PIPE)
File "/opt/python3.6/lib/python3.6/subprocess.py", line 729, in __init__
 restore_signals, start_new_session)
File "/opt/python3.6/lib/python3.6/subprocess.py", line 1364, in _execute_child
  raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 8] Exec format error: 'Application_2/chromedriver_win32/chromedriver.exe'
[2021-10-29 09:57:44 +0000] [11] [INFO] Worker exiting (pid: 11)
[2021-10-29 09:57:44 +0000] [1] [INFO] Shutting down: Master
[2021-10-29 09:57:44 +0000] [1] [INFO] Reason: Worker failed to boot.

登录错误 Google App 引擎:

'''OSError: [Errno 8] Exec format error: 'Application/chromedriver.exe'
at _execute_child (/opt/python3.9/lib/python3.9/subprocess.py:1821)
at __init__ (/opt/python3.9/lib/python3.9/subprocess.py:951)
at start (/layers/google.python.pip/pip/lib/python3.9/site- 
packages/selenium/webdriver/common/service.py:72)
at __init__ (/layers/google.python.pip/pip/lib/python3.9/site- 
packages/selenium/webdriver/chrome/webdriver.py:73)
at <module> (/workspace/prod_class.py:17)
at <module> (/workspace/file_upload.py:5)
at <module> (/workspace/main.py:2)
at _call_with_frames_removed (<frozen importlib._bootstrap>:228)
at exec_module (<frozen importlib._bootstrap_external>:850)
at _load_unlocked (<frozen importlib._bootstrap>:680)
at _find_and_load_unlocked (<frozen importlib._bootstrap>:986)
at _find_and_load (<frozen importlib._bootstrap>:1007)
at _gcd_import (<frozen importlib._bootstrap>:1030)
at import_module (/opt/python3.9/lib/python3.9/importlib/__init__.py:127)
at import_app (/layers/google.python.pip/pip/lib/python3.9/site-packages/gunicorn/util.py:359)
at load_wsgiapp (/layers/google.python.pip/pip/lib/python3.9/site- 
packages/gunicorn/app/wsgiapp.py:48)
at load (/layers/google.python.pip/pip/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py:58)
at wsgi (/layers/google.python.pip/pip/lib/python3.9/site-packages/gunicorn/app/base.py:67)
at load_wsgi (/layers/google.python.pip/pip/lib/python3.9/site- 
packages/gunicorn/workers/base.py:146)
at init_process (/layers/google.python.pip/pip/lib/python3.9/site- 
packages/gunicorn/workers/base.py:134)
at spawn_worker (/layers/google.python.pip/pip/lib/python3.9/site- 
packages/gunicorn/arbiter.py:589)'''

我试图下载最新版本的 chrome 和 chromedirver,并将它们放在调用它们的同一文件夹中,但一直在不断地进入这个错误。我不确定该怎么做。任何帮助将不胜感激。

您在 Linux 上下文中使用的 .exe 文件 (chromedriver.exe) 无效。

driverOptions = webdriver.ChromeOptions()
driverOptions.binary_location = 'Application_2/chrome.exe' # <- Here
driverOptions.add_argument("--headless")
driver = webdriver.Chrome('Application_2/chromedriver_win32/chromedriver.exe', 
chrome_options=driverOptions)

您可以前往 site. However, you wont be able to have/download it in App Engine Standard. Instead, you have to use App Engine Flex Custom Runtime, as it suits better for what you're describing, using a Docker container with chromedriver (check this quickstart 下载 Linux 兼容的 chromedriver 版本以获取更多信息。

我的建议是让它在 Docker 容器内工作,然后查看有关如何 Deploy and Test your Custom Runtime Application. You might also want to check this post 使用类似场景的官方文档。