##// END OF EJS Templates
Merge pull request #2148 from bfroehle/no_more_os_system...
Merge pull request #2148 from bfroehle/no_more_os_system win32 iptest: Use subprocess.Popen() instead of os.system(). The call to `os.system` in `iptest` prevents us from easily setting `$IPYTHONDIR` to a temporary directory. In theory we should be able to use `subprocess.Popen` instead of `os.system` in Windows. This would unify the code structure and make it easy to pass in a different environment. Note that Python < 2.7 does not have `os.kill`. I've attempted to work around this by using `ctypes` to kill any living processes.

File last commit:

r4872:34c10438
r8028:6ed621a3 merge
Show More
ipy_server.py
37 lines | 1023 B | text/x-python | PythonLexer
""" Simple TCP socket server that executes statements in IPython instance.
Usage:
import ipy_server
ipy_server.serve_thread(16455)
Now, to execute the statements in this ipython instance, open a TCP socket
(port 16455), write out the statements, and close the socket.
You can use e.g. "telnet localhost 16455" or a script to do this.
This is a bit like 'M-x server-start" or gnuserv in the emacs world.
"""
from IPython.core import ipapi
ip = ipapi.get()
import SocketServer
# user-accessible port
PORT = 8099
class IPythonRequestHandler(SocketServer.StreamRequestHandler):
def handle(self):
#print "connection from", self.client_address
inp = self.rfile.read().replace('\r\n','\n')
#print "Execute",inp
ip.runlines(inp)
def serve(port = PORT):
server = SocketServer.TCPServer(("", port), IPythonRequestHandler)
print "ipy_server on TCP port", port
server.serve_forever()
def serve_thread(port = PORT):
import thread
thread.start_new_thread(serve, (port,))