1

Как объявлено сегодня в Production Troubleshooting with Cloud Debugger now available for Python, предположительно, я могу использовать Python Debugger сейчас.Google Cloud Debugger не работает для управляемых виртуальных машин Python AppEngine

Я запускаю управляемые виртуальные машины AppEngine на изображениях GCE, поэтому следую руководству для Setting up Python on Compute Engine. Я изменил мой Dockerfile добавить pip install google-python-cloud-debugger (я также попытался установить библиотеку прямо в мое приложении/Lib, который входит в моем sys.path):

FROM gcr.io/google_appengine/python-compat 
RUN pip install google-python-cloud-debugger 
ADD . /app 

И тогда я изменил мой main.py чтобы включить отладчик:

try: 
    import googleclouddebugger 
    googleclouddebugger.AttachDebugger() 
except ImportError: 
    pass 

к сожалению, когда я совершаю код, запустите gcloud preview app gen-repo-info-file и нажмите на нее, я не могу использовать отладчик. Когда я иду в https://console.developers.google.com/debug, он загружает мой репозиторий Github на право, но я вижу сообщение об ошибке в левой навигационной области:

Debugging не доступен. Вы можете отлаживать Java-приложений, работающих на App Engine или Compute Engine

Любые идеи, что может быть пойдет не так, или как отлаживать отладчик?

ответ

1

Хотя другая тема предоставила много возможностей для отслеживания общих передовых методов в отладке, решение намного проще, чем любой из нас представлял. Вероятно, ошибки, которые вы видите, являются результатом того, что управляемые виртуальные машины с python еще не поддерживаются платформой для Cloud Debugger, according to the documentation.

Однако, с ростом службы Cloud Debugger и тем фактом, что облачный отладчик с python вообще был just announced on the 7th, вполне возможно, что это изменится.

Не стесняйтесь записывать запросы о функциях в Cloud Platform Public Issue Tracker, если вы заметили что-то неявное и хотели бы сообщить нам, что это интерес для вас и других людей, которые могут сыграть эту проблему.

+1

Ahhh, я подумал: «Любое приложение Python, запущенное на экземпляре Google Compute Engine», захватило «приложение управляемой виртуальной машины Python, запущенное на экземпляре GCE», но, глядя на поддерживаемые Java платформы, становится понятным, что управляемые виртуальные машины не поддерживаются все же. Благодаря! –

+0

Так http://googlecloudplatform.blogspot.tw/2016/02/diagnose-problems-in-your-production-apps-faster-with-Google-Cloud-Debugger.html упоминает: «С этим выпуском Cloud Debugger теперь доступны для следующих языков и платформ: приложения Python, работающие на App Engine, управляемые виртуальными машинами приложений и вычислительными машинами App Engine » Однако я не могу заставить отладчик найти отлаживаемое приложение и официальные документы в https://cloud.google.com/debugger/ все еще говорят, что приложения Python App Engine работают в App Engine. (и не упоминайте управляемые виртуальные машины). Итак ... Я полагаю, что сообщение в блоге неверно? –

0

EDIT: Несмотря на то, что поток этого ответа содержит полезные шаги отладки, основная причина проблемы объясняется в другом опубликованном ответе.

Это, скорее всего, две вещи, которые происходят здесь:

Первое, что ваша команда пип, работает как обычный пользователь хочет получить доступ к системе места установки и не без привилегий суперпользователя. Попробуйте sudo pip install... или pip install -t lib/ google-python-cloud-debugger.

Второе, что происходит, это то, что ваш код захватывает ImportError и просто pass ing. Я видел эту конструкцию раньше в своей жизни как питон-спикер, и, честно говоря, это дробовик, если я когда-либо видел его. Какая цель может служить pass? Журнал ошибок быстро показывает проблему, если вы принимаете такую ​​меру предосторожности.

+0

Я следил за документацией Google, приведенной выше, по двум указанным вопросам. (Не-sudo pip и тихий проход.) Возможно, стоит сказать, что doc-writer также исправил этот документ? Для тихого прохода я добавил заявление о регистрации, но я понятия не имею, где я его увижу. Это не было бы в журнале для каждого сервлета (так как это происходит до того, как сервер wsgi инициализируется), и он не находится в выводе последовательной консоли экземпляра виртуальной машины. В моем main.py есть другие журналы, которые я никогда не вижу в prod. –

+0

Что касается пипса, я попытался установить библиотеку googleclouddebugger в lib /, который я нажимаю, как упоминалось в моем первоначальном вопросе. Он не работает, но, возможно, он добивается большего прогресса? Кажется, что каждый запрос сразу 500 секунд (без каких-либо выходных данных журнала). Запросы «/ mapreduce/controller_callback» возвращают 200, но они маршрутизируются через другой сервер/модуль wsgi через my app.yaml, поэтому я не уверен, насколько это уместно. И если я открою Cloud Debugger, пока мое приложение обслуживает 500 штук, оно продолжает сообщать мне то же сообщение об ошибке: «Отладка недоступна» –

+0

Вам нужно будет добавить 'lib /' в ваш путь к python, если вы используете такой папка. Неужели 'sudo' не помогает сделать модуль глобально видимым? – Nick

0

Самый простой способ проверить, что Python Cloud Debugger правильно установлен, чтобы попытаться импортировать его в Python интерактивной консоли:

docker run -i -t cdbgtest bin/bash 
python 
import googleclouddebugger 
print googleclouddebugger.__version__ 

Я думаю, что в вашем случае pip install google-python-cloud-debugger не удается. Если это так, вероятно, из-за устаревших pip.Установка pip с sudo easy_install pip решила бы его.

Смежные вопросы