28 lines
1.3 KiB
ReStructuredText
28 lines
1.3 KiB
ReStructuredText
:mod:`backdoor` -- Python interactive interpreter within a running process
|
|
===============================================================================
|
|
|
|
The backdoor module is convenient for inspecting the state of a long-running process. It supplies the normal Python interactive interpreter in a way that does not block the normal operation of the application. This can be useful for debugging, performance tuning, or simply learning about how things behave in situ.
|
|
|
|
In the application, spawn a greenthread running backdoor_server on a listening socket::
|
|
|
|
eventlet.spawn(backdoor.backdoor_server, eventlet.listen(('localhost', 3000)))
|
|
|
|
When this is running, the backdoor is accessible via telnet to the specified port.
|
|
|
|
.. code-block:: sh
|
|
|
|
$ telnet localhost 3000
|
|
Python 2.6.2 (r262:71600, Apr 16 2009, 09:17:39)
|
|
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
|
|
Type "help", "copyright", "credits" or "license" for more information.
|
|
>>> import myapp
|
|
>>> dir(myapp)
|
|
['__all__', '__doc__', '__name__', 'myfunc']
|
|
>>>
|
|
|
|
The backdoor cooperatively yields to the rest of the application between commands, so on a running server continuously serving requests, you can observe the internal state changing between interpreter commands.
|
|
|
|
.. automodule:: eventlet.backdoor
|
|
:members:
|
|
|