Gevent monkey-patching и контрольные точки
Я играл с Гевентом, и мне это очень нравится. Однако я столкнулся с проблемой. Точка останова не попадает, и отладка не работает (с использованием как Visual Studio Python Tools, так и Eclipse PyDev). Это происходит после вызова monkey.patch_all()
.
Это большая проблема для меня, и, к сожалению, это блокиратор для использования gevent. Я нашел несколько потоков, которые, похоже, указывают на то, что gevent прерывает отладку, но я бы предположил, что для этого есть решение.
Кто-нибудь знает, как заставить отладочные и контрольные точки работать с исправлениями gevent и обезьян?
Ответы
Ответ 1
PyCharm IDE решает проблему. Он поддерживает отладку кода gevent после того, как вы установили флаг конфигурации: http://blog.jetbrains.com/pycharm/2012/08/gevent-debug-support/.
К сожалению, на данный момент я не знаю свободного инструмента, способного отлаживать gevent.
UPD: ЕСТЬ! Теперь есть версия сообщества PyCharm.
Ответ 2
pdb - Отладчик Python
import pdb
pdb.set_trace() # Place this where you want to drop into the python interpreter.
Ответ 3
Я использую Pycharm 2.7.3 в настоящее время, и у меня тоже были проблемы с gevent 0.13.8, отлаживающие отладку. Однако, когда я обновился до gevent 1.0rc3, я обнаружил, что могу отлаживать снова правильно.
Sidenote:
Я только сейчас узнал, что у Jetbrains было обходное решение с флагом конфигурации. Я столкнулся с проблемой, когда мне нужно было отлаживать следующий хак. Я честно не знаю, почему это сработало, и каковы были негативные последствия. Я просто сделал небольшую пробную версию и ошибку, и это позволило разрешить работу отладки при использовании grequests.
# overrides the monkeypatch issue which causes debugging in PyDev to not work.
def patch_time():
return
import gevent.monkey
gevent.monkey.patch_time = patch_time
import grequests