summaryrefslogtreecommitdiffstats
path: root/external_libs/python/pyzmq-14.7.0/examples/pubsub/topics_pub.py
diff options
context:
space:
mode:
Diffstat (limited to 'external_libs/python/pyzmq-14.7.0/examples/pubsub/topics_pub.py')
-rw-r--r--external_libs/python/pyzmq-14.7.0/examples/pubsub/topics_pub.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/external_libs/python/pyzmq-14.7.0/examples/pubsub/topics_pub.py b/external_libs/python/pyzmq-14.7.0/examples/pubsub/topics_pub.py
new file mode 100644
index 00000000..73b3d1c5
--- /dev/null
+++ b/external_libs/python/pyzmq-14.7.0/examples/pubsub/topics_pub.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+"""Simple example of publish/subscribe illustrating topics.
+
+Publisher and subscriber can be started in any order, though if publisher
+starts first, any messages sent before subscriber starts are lost. More than
+one subscriber can listen, and they can listen to different topics.
+
+Topic filtering is done simply on the start of the string, e.g. listening to
+'s' will catch 'sports...' and 'stocks' while listening to 'w' is enough to
+catch 'weather'.
+"""
+
+#-----------------------------------------------------------------------------
+# Copyright (c) 2010 Brian Granger
+#
+# Distributed under the terms of the New BSD License. The full license is in
+# the file COPYING.BSD, distributed as part of this software.
+#-----------------------------------------------------------------------------
+
+import itertools
+import sys
+import time
+
+import zmq
+
+def main():
+ if len (sys.argv) != 2:
+ print 'usage: publisher <bind-to>'
+ sys.exit (1)
+
+ bind_to = sys.argv[1]
+
+ all_topics = ['sports.general','sports.football','sports.basketball',
+ 'stocks.general','stocks.GOOG','stocks.AAPL',
+ 'weather']
+
+ ctx = zmq.Context()
+ s = ctx.socket(zmq.PUB)
+ s.bind(bind_to)
+
+ print "Starting broadcast on topics:"
+ print " %s" % all_topics
+ print "Hit Ctrl-C to stop broadcasting."
+ print "Waiting so subscriber sockets can connect..."
+ print
+ time.sleep(1.0)
+
+ msg_counter = itertools.count()
+ try:
+ for topic in itertools.cycle(all_topics):
+ msg_body = str(msg_counter.next())
+ print ' Topic: %s, msg:%s' % (topic, msg_body)
+ s.send_multipart([topic, msg_body])
+ # short wait so we don't hog the cpu
+ time.sleep(0.1)
+ except KeyboardInterrupt:
+ pass
+
+ print "Waiting for message queues to flush..."
+ time.sleep(0.5)
+ print "Done."
+
+if __name__ == "__main__":
+ main()