##// END OF EJS Templates
Merge pull request #950 from minrk/startup...
Merge pull request #950 from minrk/startup Add directory for startup files, enabling users to add local configuration more simply without having to know how the config system works much at all. Now, `profile/startup` dir is checked for files, and they are run prior to explicit exec_code and exec_files. A short README is added to the dir explaining how they work, and a short paragraph is added to the docs, in both the interactive tutorial and config overview.

File last commit:

r5170:cde501a4
r5251:b1311503 merge
Show More
heartbeat.py
48 lines | 1.6 KiB | text/x-python | PythonLexer
Brian Granger
Added heartbeat support.
r2910 """The client and server for a basic ping-pong style heartbeat.
"""
#-----------------------------------------------------------------------------
# Copyright (C) 2008-2010 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
MinRK
specify heartbeat port at construction, not in run...
r4500 import socket
Brian Granger
Added heartbeat support.
r2910 import sys
from threading import Thread
import zmq
MinRK
Possible fix for GH-169
r3144 from IPython.utils.localinterfaces import LOCALHOST
Brian Granger
Added heartbeat support.
r2910 #-----------------------------------------------------------------------------
# Code
#-----------------------------------------------------------------------------
class Heartbeat(Thread):
"A simple ping-pong style heartbeat that runs in a thread."
MinRK
Possible fix for GH-169
r3144 def __init__(self, context, addr=(LOCALHOST, 0)):
Brian Granger
Added heartbeat support.
r2910 Thread.__init__(self)
self.context = context
MinRK
fix --ip='*' argument in various apps...
r5170 self.ip, self.port = addr
MinRK
specify heartbeat port at construction, not in run...
r4500 if self.port == 0:
s = socket.socket()
MinRK
fix --ip='*' argument in various apps...
r5170 # '*' means all interfaces to 0MQ, which is '' to socket.socket
s.bind(('' if self.ip == '*' else self.ip, 0))
MinRK
specify heartbeat port at construction, not in run...
r4500 self.port = s.getsockname()[1]
s.close()
MinRK
fix --ip='*' argument in various apps...
r5170 self.addr = (self.ip, self.port)
Brian Granger
Added heartbeat support.
r2910 self.daemon = True
def run(self):
self.socket = self.context.socket(zmq.REP)
MinRK
specify heartbeat port at construction, not in run...
r4500 self.socket.bind('tcp://%s:%i' % self.addr)
Brian Granger
Added heartbeat support.
r2910 zmq.device(zmq.FORWARDER, self.socket, self.socket)