[Twisted-Python] integrating a python REPL into my existing twisted application
Benjamin Rutt
rutt.4 at osu.edu
Fri May 27 17:45:47 EDT 2011
On Thu, May 26, 2011 at 9:38 AM, <exarkun at twistedmatrix.com> wrote:
>
> In addition to what Andrew said, I'll also point out that rather than
> making code that expects blocking writes to stdout work by putting
> stdout back into blocking mode, you can make it work by instead
> providing a stdout which will buffer anything that cannot immediately be
> written non-blockingly. StandardIO gives you exactly this; its `write`
> knows how to deal with non-blocking descriptors and buffer as necessary.
> This is why manhole doesn't have the same problem as your code calling
> directly into `code.interact`. For details,
> <http://twistedmatrix.com/trac/browser/trunk/twisted/conch/manhole.py#L45
> >.
>
>
Thanks. I'm having trouble integrating this or Andrew's idea into my
example. The simplest case doesn't quite work right for me (I see '>>>'
prompts, and can interact with the python interpreter but the banner appears
at the end of the REPL after I press Ctrl+D, and then I never see the '>'
prompts from my original program anymore)...was this what you had in mind?
See the diff below.
@@ -6,6 +6,7 @@
without blocking the reactor.
"""
+import sys
from twisted.internet import stdio
from twisted.protocols import basic
@@ -22,7 +23,8 @@
code.interact()
def main():
- stdio.StandardIO(Echo())
+ stdio_obj = stdio.StandardIO(Echo())
+ sys.stderr = stdio_obj
from twisted.internet import reactor
reactor.run()
--
Benjamin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-python/attachments/20110527/cf34c698/attachment.htm
More information about the Twisted-Python
mailing list