##// END OF EJS Templates
Work on examples and fixed a super subtle bug in Component....
Work on examples and fixed a super subtle bug in Component. * Recently, we stopped copying the config passed to a Component. This had a subtle side effect that mutable config attribute values were becoming class wide attributes. We are now doing a deep copy of all attributes as they are set on the Component instance.

File last commit:

r2308:dd899bf7
r2337:ab18149a
Show More
client.py
88 lines | 2.5 KiB | text/x-python | PythonLexer
Brian Granger
Most of the new ipcluster is now working, including a nice client.
r2306 #!/usr/bin/env python
Brian E Granger
This is a manual merge of certain things in the ipython1-dev branch, revision 46, into the main ...
r1234 # encoding: utf-8
"""This module contains blocking clients for the controller interfaces.
Unlike the clients in `asyncclient.py`, the clients in this module are fully
blocking. This means that methods on the clients return the actual results
rather than a deferred to the result. Also, we manage the Twisted reactor
for you. This is done by running the reactor in a thread.
The main classes in this module are:
* MultiEngineClient
* TaskClient
* Task
* CompositeError
"""
Brian Granger
Most of the new ipcluster is now working, including a nice client.
r2306 #-----------------------------------------------------------------------------
# Copyright (C) 2008-2009 The IPython Development Team
Brian E Granger
This is a manual merge of certain things in the ipython1-dev branch, revision 46, into the main ...
r1234 #
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
Brian Granger
Most of the new ipcluster is now working, including a nice client.
r2306 #-----------------------------------------------------------------------------
Brian E Granger
This is a manual merge of certain things in the ipython1-dev branch, revision 46, into the main ...
r1234
Brian Granger
Most of the new ipcluster is now working, including a nice client.
r2306 #-----------------------------------------------------------------------------
Brian E Granger
This is a manual merge of certain things in the ipython1-dev branch, revision 46, into the main ...
r1234 # Imports
Brian Granger
Most of the new ipcluster is now working, including a nice client.
r2306 #-----------------------------------------------------------------------------
Brian E Granger
This is a manual merge of certain things in the ipython1-dev branch, revision 46, into the main ...
r1234
Brian Granger
Most of the new ipcluster is now working, including a nice client.
r2306 from cStringIO import StringIO
Brian E Granger
This is a manual merge of certain things in the ipython1-dev branch, revision 46, into the main ...
r1234 import sys
Brian Granger
Most of the new ipcluster is now working, including a nice client.
r2306 import warnings
Brian E Granger
This is a manual merge of certain things in the ipython1-dev branch, revision 46, into the main ...
r1234
Brian Granger
Fixing installation related issues.
r2058 # from IPython.utils import growl
Brian E Granger
This is a manual merge of certain things in the ipython1-dev branch, revision 46, into the main ...
r1234 # growl.start("IPython1 Client")
from twisted.internet import reactor
Brian Granger
Most of the new ipcluster is now working, including a nice client.
r2306 from twisted.internet.error import PotentialZombieWarning
from twisted.python import log
from IPython.kernel.clientconnector import ClientConnector, Cluster
Brian E Granger
This is a manual merge of certain things in the ipython1-dev branch, revision 46, into the main ...
r1234 from IPython.kernel.twistedutil import ReactorInThread
from IPython.kernel.twistedutil import blockingCallFromThread
# These enable various things
from IPython.kernel import codeutil
Brian Granger
General work on the kernel config.
r2294 # import IPython.kernel.magic
Brian E Granger
This is a manual merge of certain things in the ipython1-dev branch, revision 46, into the main ...
r1234
# Other things that the user will need
Brian E Granger
The refactoring of the Task system is nearly complete. Now there are...
r1395 from IPython.kernel.task import MapTask, StringTask
Brian E Granger
This is a manual merge of certain things in the ipython1-dev branch, revision 46, into the main ...
r1234 from IPython.kernel.error import CompositeError
#-------------------------------------------------------------------------------
# Code
#-------------------------------------------------------------------------------
Brian Granger
Most of the new ipcluster is now working, including a nice client.
r2306 warnings.simplefilter('ignore', PotentialZombieWarning)
Brian E Granger
This is a manual merge of certain things in the ipython1-dev branch, revision 46, into the main ...
r1234
Brian Granger
Most of the new ipcluster is now working, including a nice client.
r2306 _client_tub = ClientConnector()
Brian E Granger
This is a manual merge of certain things in the ipython1-dev branch, revision 46, into the main ...
r1234
Brian Granger
Most of the new ipcluster is now working, including a nice client.
r2306 get_multiengine_client = _client_tub.get_multiengine_client
get_task_client = _client_tub.get_task_client
Brian E Granger
This is a manual merge of certain things in the ipython1-dev branch, revision 46, into the main ...
r1234 MultiEngineClient = get_multiengine_client
TaskClient = get_task_client
Brian Granger
Changed the INT then KILL delay to 2 s to be a little more friendly.
r2308 # This isn't great. I should probably set this up in the ReactorInThread
# class below. But, it does work for now.
Brian Granger
Most of the new ipcluster is now working, including a nice client.
r2306 log.startLogging(sys.stdout, setStdout=0)
Brian E Granger
This is a manual merge of certain things in the ipython1-dev branch, revision 46, into the main ...
r1234
# Now we start the reactor in a thread
rit = ReactorInThread()
rit.setDaemon(True)
Brian Granger
Most of the new ipcluster is now working, including a nice client.
r2306 rit.start()
__all__ = [
'MapTask',
'StringTask',
'MultiEngineClient',
'TaskClient',
'CompositeError',
'get_task_client',
'get_multiengine_client',
'Cluster'
]