Quellcode durchsuchen

加入ping pong 对订阅频道进行保活机制

James Iter vor 9 Jahren
Ursprung
Commit
5553aa9074
2 geänderte Dateien mit 20 neuen und 2 gelöschten Zeilen
  1. 4 1
      main.py
  2. 16 1
      models/initialize.py

+ 4 - 1
main.py

@@ -16,7 +16,7 @@ from flask import g
 
 from models import Utils
 from models.event_processor import EventProcessor
-from models.initialize import app, logger, q_ws
+from models.initialize import app, logger, q_ws, Init
 import api_route_table
 import views_route_table
 from models import Database as db
@@ -134,6 +134,9 @@ if __name__ == '__main__':
             thread.start_new_thread(EventProcessor.launch, ())
             Utils.thread_counter += 1
 
+            thread.start_new_thread(Init.pub_sub_ping_pong, ())
+            Utils.thread_counter += 1
+
             app.run(host=app.config['jimv_listen'], port=app.config['jimv_port'], use_reloader=False, threaded=True)
 
             while Utils.thread_counter > 0:

+ 16 - 1
models/initialize.py

@@ -3,7 +3,7 @@
 
 
 from multiprocessing import JoinableQueue
-from flask import Flask, g
+from flask import Flask
 import logging
 from logging.handlers import TimedRotatingFileHandler
 import json
@@ -12,6 +12,7 @@ import sys
 import re
 import getopt
 import jimit as ji
+import time
 
 from jimvc_exception import PathNotExist
 from state_code import own_state_branch
@@ -92,6 +93,20 @@ class Init(object):
         _logger.addHandler(fh)
         return _logger
 
+    @staticmethod
+    def pub_sub_ping_pong():
+        from models import Database as db
+        from models import Utils
+
+        while True:
+            if Utils.exit_flag:
+                Utils.thread_counter -= 1
+                print 'Thread pub_sub_ping_pong say bye-bye'
+                return
+
+            time.sleep(10)
+            db.r.publish(app.config['instruction_channel'], message=json.dumps({'action': 'ping'}))
+
 
 q_ws = JoinableQueue()
 # 预编译效率更高