Browse Source

Embed the Tornado web server

Ask Solem 15 years ago
parent
commit
47c1ed03f0
2 changed files with 27 additions and 0 deletions
  1. 3 0
      celery/monitoring/__init__.py
  2. 24 0
      celery/monitoring/web.py

+ 3 - 0
celery/monitoring.py → celery/monitoring/__init__.py

@@ -4,6 +4,7 @@ from collections import defaultdict
 from carrot.connection import DjangoBrokerConnection
 
 from celery.events import EventReceiver
+from celery.monitoring.web import WebServerThread
 
 HEARTBEAT_EXPIRE = 120 # Heartbeats must be at most 2 minutes apart.
 
@@ -75,5 +76,7 @@ class MonitorService(object):
     def start(self):
         state = MonitorState()
         listener = MonitorListener(state)
+        webthread = WebServerThread()
+        webthread.start()
 
         listener.start()

+ 24 - 0
celery/monitoring/web.py

@@ -0,0 +1,24 @@
+import threading
+
+from tornado import httpserver
+from tornado import ioloop
+
+
+
+def handle_request(request):
+    message = "You requested %s\n" % request.uri
+    request.write("HTTP/1.1 200 OK\r\nContent-Length: %d\r\n\r\n%s" % (
+                    len(message), message))
+    request.finish()
+
+
+class WebServerThread(threading.Thread):
+
+    def __init__(self):
+        super(WebServerThread, self).__init__()
+        self.setDaemon(True)
+
+    def run(self):
+        http_server = httpserver.HTTPServer(handle_request)
+        http_server.listen(8888)
+        ioloop.IOLoop.instance().start()