Show More
@@ -35,7 +35,7 b' class KernelStarter(object):' | |||||
35 | msgtype = msg['msg_type'] |
|
35 | msgtype = msg['msg_type'] | |
36 | handler = self.handlers.get(msgtype, None) |
|
36 | handler = self.handlers.get(msgtype, None) | |
37 | if handler is None: |
|
37 | if handler is None: | |
38 | self.downstream.send_multipart(raw_msg) |
|
38 | self.downstream.send_multipart(raw_msg, copy=False) | |
39 | else: |
|
39 | else: | |
40 | handler(msg) |
|
40 | handler(msg) | |
41 |
|
41 | |||
@@ -49,7 +49,7 b' class KernelStarter(object):' | |||||
49 | msgtype = msg['msg_type'] |
|
49 | msgtype = msg['msg_type'] | |
50 | handler = self.handlers.get(msgtype, None) |
|
50 | handler = self.handlers.get(msgtype, None) | |
51 | if handler is None: |
|
51 | if handler is None: | |
52 | self.upstream.send_multipart(raw_msg) |
|
52 | self.upstream.send_multipart(raw_msg, copy=False) | |
53 | else: |
|
53 | else: | |
54 | handler(msg) |
|
54 | handler(msg) | |
55 |
|
55 | |||
@@ -58,7 +58,8 b' class KernelStarter(object):' | |||||
58 | #-------------------------------------------------------------------------- |
|
58 | #-------------------------------------------------------------------------- | |
59 |
|
59 | |||
60 | def shutdown_request(self, msg): |
|
60 | def shutdown_request(self, msg): | |
61 |
|
61 | """""" | ||
|
62 | self.downstream.send_multipart(msg) | |||
62 |
|
63 | |||
63 | #-------------------------------------------------------------------------- |
|
64 | #-------------------------------------------------------------------------- | |
64 | # Kernel process management methods, from KernelManager: |
|
65 | # Kernel process management methods, from KernelManager: | |
@@ -202,7 +203,7 b' class KernelStarter(object):' | |||||
202 |
|
203 | |||
203 |
|
204 | |||
204 | def make_starter(up_addr, down_addr, *args, **kwargs): |
|
205 | def make_starter(up_addr, down_addr, *args, **kwargs): | |
205 |
"""entry point |
|
206 | """entry point function for launching a kernelstarter in a subprocess""" | |
206 | loop = ioloop.IOLoop.instance() |
|
207 | loop = ioloop.IOLoop.instance() | |
207 | ctx = zmq.Context() |
|
208 | ctx = zmq.Context() | |
208 | session = StreamSession() |
|
209 | session = StreamSession() |
@@ -114,13 +114,6 b' class Message(object):' | |||||
114 | def msg_header(msg_id, msg_type, username, session): |
|
114 | def msg_header(msg_id, msg_type, username, session): | |
115 | date=datetime.now().isoformat() |
|
115 | date=datetime.now().isoformat() | |
116 | return locals() |
|
116 | return locals() | |
117 | # return { |
|
|||
118 | # 'msg_id' : msg_id, |
|
|||
119 | # 'msg_type': msg_type, |
|
|||
120 | # 'username' : username, |
|
|||
121 | # 'session' : session |
|
|||
122 | # } |
|
|||
123 |
|
||||
124 |
|
117 | |||
125 | def extract_header(msg_or_header): |
|
118 | def extract_header(msg_or_header): | |
126 | """Given a message or header, return the header.""" |
|
119 | """Given a message or header, return the header.""" | |
@@ -179,8 +172,8 b' def serialize_object(obj, threshold=64e-6):' | |||||
179 | ------- |
|
172 | ------- | |
180 | ('pmd', [bufs]) : |
|
173 | ('pmd', [bufs]) : | |
181 | where pmd is the pickled metadata wrapper, |
|
174 | where pmd is the pickled metadata wrapper, | |
182 |
bufs is a list of data buffers |
|
175 | bufs is a list of data buffers | |
183 | # threshold is 100 B |
|
176 | """ | |
184 | databuffers = [] |
|
177 | databuffers = [] | |
185 | if isinstance(obj, (list, tuple)): |
|
178 | if isinstance(obj, (list, tuple)): | |
186 | clist = canSequence(obj) |
|
179 | clist = canSequence(obj) |
@@ -199,8 +199,13 b" def paramiko_tunnel(lport, rport, server, remoteip='127.0.0.1', keyfile=None, pa" | |||||
199 | This creates a tunnel redirecting `localhost:lport` to `remoteip:rport`, |
|
199 | This creates a tunnel redirecting `localhost:lport` to `remoteip:rport`, | |
200 | as seen from `server`. |
|
200 | as seen from `server`. | |
201 |
|
201 | |||
|
202 | If you are familiar with ssh tunnels, this creates the tunnel: | |||
|
203 | ||||
|
204 | ssh server -L localhost:lport:remoteip:rport | |||
|
205 | ||||
202 | keyfile and password may be specified, but ssh config is checked for defaults. |
|
206 | keyfile and password may be specified, but ssh config is checked for defaults. | |
203 |
|
207 | |||
|
208 | ||||
204 | Parameters |
|
209 | Parameters | |
205 | ---------- |
|
210 | ---------- | |
206 |
|
211 | |||
@@ -244,8 +249,8 b' def _shutdown_process(p):' | |||||
244 | p.terminate() |
|
249 | p.terminate() | |
245 |
|
250 | |||
246 | def _paramiko_tunnel(lport, rport, server, remoteip, keyfile=None, password=None): |
|
251 | def _paramiko_tunnel(lport, rport, server, remoteip, keyfile=None, password=None): | |
247 |
""" |
|
252 | """Function for actually starting a paramiko tunnel, to be passed | |
248 | to multiprocessing.Process(target=this). |
|
253 | to multiprocessing.Process(target=this), and not called directly. | |
249 | """ |
|
254 | """ | |
250 | username, server, port = _split_server(server) |
|
255 | username, server, port = _split_server(server) | |
251 | client = paramiko.SSHClient() |
|
256 | client = paramiko.SSHClient() | |
@@ -285,16 +290,3 b' else:' | |||||
285 | __all__ = ['tunnel_connection', 'ssh_tunnel', 'openssh_tunnel', 'paramiko_tunnel', 'try_passwordless_ssh'] |
|
290 | __all__ = ['tunnel_connection', 'ssh_tunnel', 'openssh_tunnel', 'paramiko_tunnel', 'try_passwordless_ssh'] | |
286 |
|
291 | |||
287 |
|
292 | |||
288 |
|
||||
289 |
|
||||
290 |
|
||||
291 |
|
||||
292 |
|
||||
293 |
|
||||
294 |
|
||||
295 |
|
||||
296 |
|
||||
297 |
|
||||
298 |
|
||||
299 |
|
||||
300 |
|
General Comments 0
You need to be logged in to leave comments.
Login now