Google Appengine Standard Python 2.7: больше нельзя запускать конечные точки Google на localhost dev_appserver.py

Сегодня пошел поработать над более старым проектом Python2.7 AppEngine Standard, но я не могу заставить работать конечные точки. Я загрузил образец кода, чтобы проверить, не виноват ли мой проект, но образец тоже не работает. https://cloud.google.com/endpoints/docs/frameworks/python/get-started-frameworks-python#run_local

dev_appserver.py --host 192.168.1.73 app.yaml --smtp_host=smtp.telus.net --smtp_port=25
INFO     2020-02-04 19:46:38,243 devappserver2.py:289] Skipping SDK update check.
INFO     2020-02-04 19:46:38,303 api_server.py:282] Starting API server at: http://localhost:45473
INFO     2020-02-04 19:46:38,325 dispatcher.py:267] Starting module "default" running at: http://192.168.1.73:8080
INFO     2020-02-04 19:46:38,326 admin_server.py:150] Starting admin server at: http://localhost:8000

Все начинается хорошо, но когда я попадаю в конечную точку: / _ah / api / echo / v1 / echo

Traceback (most recent call last):
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 311, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
  File "/home/mparkes/app_engine_projects/samples/python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo/main.py", line 19, in <module>
    import endpoints
  File "/home/mparkes/app_engine_projects/samples/python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo/lib/endpoints/__init__.py", line 33, in <module>
    from .apiserving import *
  File "/home/mparkes/app_engine_projects/samples/python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo/lib/endpoints/apiserving.py", line 71, in <module>
    from endpoints_management.control import client as control_client
  File "/home/mparkes/app_engine_projects/samples/python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo/lib/endpoints_management/__init__.py", line 19, in <module>
    from . import auth, config, control, gen
  File "/home/mparkes/app_engine_projects/samples/python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo/lib/endpoints_management/config/__init__.py", line 17, in <module>
    from .service_config import ServiceConfigException
  File "/home/mparkes/app_engine_projects/samples/python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo/lib/endpoints_management/config/service_config.py", line 25, in <module>
    from apitools.base.py import encoding
  File "/home/mparkes/app_engine_projects/samples/python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo/lib/apitools/base/py/__init__.py", line 23, in <module>
    from apitools.base.py.credentials_lib import *
  File "/home/mparkes/app_engine_projects/samples/python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo/lib/apitools/base/py/credentials_lib.py", line 44, in <module>
    import fasteners
  File "/home/mparkes/app_engine_projects/samples/python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo/lib/fasteners/__init__.py", line 23, in <module>
    from fasteners.lock import locked  # noqa
  File "/home/mparkes/app_engine_projects/samples/python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo/lib/fasteners/lock.py", line 24, in <module>
    from fasteners import _utils
  File "/home/mparkes/app_engine_projects/samples/python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo/lib/fasteners/_utils.py", line 39, in <module>
    from monotonic import monotonic as now  # noqa
  File "/home/mparkes/app_engine_projects/samples/python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo/lib/monotonic.py", line 169, in <module>
    raise RuntimeError('no suitable implementation for this system: ' + repr(e))
INFO     2020-02-04 19:46:45,501 module.py:865] default: "GET /_ah/api/static/proxy.html?usegapi=1&jsh=m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.en.xh-S9KbEGSE.O%2Fam%3DwQc%2Fd%3D1%2Fct%3Dzgms%2Frs%3DAGLTcCNaUSRWzhd71dAsiMVOstVE3KcJZw%2Fm%3D__features__ HTTP/1.1" 500 -
RuntimeError: no suitable implementation for this system: IOError(13, 'file not accessible')

Связано ли это с прекращением поддержки python2.7 с 1 января 2020 года? Для справки, мое приложение по-прежнему отлично работает на Appengine, но я больше не смогу заниматься разработкой.

[РЕДАКТИРОВАТЬ] Версия Google Cloud:

Google Cloud SDK 279.0.0
alpha 2020.01.31
app-engine-python 1.9.88
app-engine-python-extras 1.9.88

[РЕДАКТИРОВАТЬ] Python:

Python 2.7.17 (default, Nov  7 2019, 10:07:09)
[GCC 7.4.0] on linux2

Если я перейду на Python 3, я потеряю конечные точки, и мне придется полностью переписать свой клиентский код.

Заранее спасибо.


comment
Мне кажется, что основная причина связана с этим: github.com/eventlet/eventlet/issues/ 401 Я считаю, что это вызвано eventlet, который сильно мешает Python в момент запуска. Как я вижу из ваших журналов, возможно, monotonic.py импортирует eventlet за кулисами. Вы можете попробовать обходной путь, упомянутый здесь: stackoverflow.com/questions/48925318/   -  person Waelmas    schedule 05.02.2020
comment
Также не могли бы вы обновить вопрос, предоставив больше информации в основном о вашей операционной системе, среде выполнения и т. Д.?   -  person Waelmas    schedule 05.02.2020


Ответы (1)


Я смог заставить это работать, используя старую версию SDK, которая у меня была.

google_appengine_1.6.63

Сделал свое дело. Я предполагаю, что последняя версия Google Cloud SDK 279.0.0 и app-engine-python 1.9.88, которую я использовал, имеет проблему с dev_appserver.py

[РЕДАКТИРОВАТЬ] Также обратите внимание, что следующая версия тоже работает

google_appengine_1.9.87

похоже, проблема с 1.9.88

Надеюсь, это поможет любому, у кого такая же проблема.

person mparkes    schedule 05.02.2020
comment
Как вы вернули свой appengine sdk к более старой версии? используя команду gcloud? - person Valentin Coudert; 13.02.2020
comment
Похоже, что 274.0.1-0 был версией 1.9.87 [см. Здесь] (cloud.google.com/sdk/docs/release-notes#27401_2019-12-26), я установил эту версию, и проблема была устранена: echo "deb http://packages.cloud.google.com/apt cloud-sdk-bionic main" | tee /etc/apt/sources.list.d/google-cloud-sdk.list curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - apt-get update -y && apt-get install -y google-cloud-sdk apt-get install -y google-cloud-sdk-app-engine-python=274.0.1-0 - person Peuchele; 19.02.2020
comment
Чтобы вернуться к более старой версии, вы можете загрузить из архивов Google console.cloud.google .com / storage / browser / appengine-sdks. - person mparkes; 06.04.2020