Gevent monkey-patching и контрольные точки - программирование
Подтвердить что ты не робот

Gevent monkey-patching и контрольные точки

Я играл с Гевентом, и мне это очень нравится. Однако я столкнулся с проблемой. Точка останова не попадает, и отладка не работает (с использованием как Visual Studio Python Tools, так и Eclipse PyDev). Это происходит после вызова monkey.patch_all().

Это большая проблема для меня, и, к сожалению, это блокиратор для использования gevent. Я нашел несколько потоков, которые, похоже, указывают на то, что gevent прерывает отладку, но я бы предположил, что для этого есть решение.

Кто-нибудь знает, как заставить отладочные и контрольные точки работать с исправлениями gevent и обезьян?

4b9b3361

Ответ 1

PyCharm IDE решает проблему. Он поддерживает отладку кода gevent после того, как вы установили флаг конфигурации: http://blog.jetbrains.com/pycharm/2012/08/gevent-debug-support/.

К сожалению, на данный момент я не знаю свободного инструмента, способного отлаживать gevent.

UPD: ЕСТЬ! Теперь есть версия сообщества PyCharm.

Ответ 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