zoukankan      html  css  js  c++  java
  • How to remote debug neutron

    First of all, I will assume that you know how to use pydevd to remote debug normal python program. If you do not know that, you can read the corresponding docs on Pycharm official website.

    If you know very well how to remote debug normal python programs and you are trying to remote debug neutron, you can continue.

    To remote debug neutron, only three additional things need to be done:

    1. Change the worker numbers of neutron api server.

    You need to edit /etc/neutron/neutron.conf to set api_worker = -1. Because by default, neutron will start multi-workers.

    2. Config your IDE (my case it is PyCharm).

    In Pycharm you need to set

    File->Build, Extension, Debugger->Python Debuger->Gevent Compatible
    

    3. In neutron code, You need to edit neutron/common/eventlet_utils.py

    On the server, the absolute path will be the neutron install location. Like /usr/lib/python2.7/site-packages/neutron/common/eventlet_utils.py

    Change the

    eventlet.monkey_patch
    

    to

    eventlet.monkey_patch(os=False, thread=False)
    

    The reason to do this is very well explained in the code comment

    import os
    
    import eventlet
    
    
    def monkey_patch():
    	if os.name == 'nt':
    		# eventlet monkey patching the os and thread modules causes
    		# subprocess.Popen to fail on Windows when using pipes due
    		# to missing non-blocking IO support.
    		#
    		# bug report on eventlet:
    		# https://bitbucket.org/eventlet/eventlet/issue/132/
    		#       eventletmonkey_patch-breaks
    		eventlet.monkey_patch(os=False, thread=False)
    	else:
    		eventlet.monkey_patch(os=False, thread=False)
    

    OK now. You can remote debug as you did.

  • 相关阅读:
    KMP算法
    Java中的字段和属性
    Java的垃圾回收机制
    一个初学所了解的jquery事件
    jQuery选择器
    hide(1000)跟show(1000)
    show/hide
    点击消失功能
    Java中集合Set的用法
    oracle的nvl和sql server的isnull
  • 原文地址:https://www.cnblogs.com/kramer/p/5660442.html
Copyright © 2011-2022 走看看