Browse Source

add main.py and add config to init server

tangs 5 years ago
parent
commit
65dfc4b427
6 changed files with 104 additions and 2 deletions
  1. 1 0
      .gitignore
  2. 7 1
      config.json
  3. 28 0
      config.py
  4. 67 0
      main.py
  5. 0 0
      storage/rubbish/README.md
  6. 1 1
      upload_test.py

+ 1 - 0
.gitignore

@@ -63,5 +63,6 @@ target/
 abc
 abc/*
 rubbish/*.tok
+storage/rubbish/*.tok
 test/official/*.tok
 temp.txt

+ 7 - 1
config.json

@@ -1,6 +1,12 @@
 {
+    "log_path": "/var/log/elec_monitor/elec_monitor.log",
     "redis_host": "local.pc",
     "redis_port": ":6370",
     "redis_db": 1,
-    "redis_password": "password"
+    "redis_password": "password",
+    "upload_max_length": 300,
+    "upload_temp_file": "/storage/temp.txt",
+    "upload_official_dir": "storage/official",
+    "upload_rubbish": "storage/rubbish",
+    "upload_interval": 300
 }

+ 28 - 0
config.py

@@ -40,3 +40,31 @@ class Config:
         except Exception as e:
             logging.error("[CONFIG] read redis config with local_config(%s) error: %s", self.local_config, e)
         return self.redis_config
+
+    def load_remote_host_config(self):
+        """
+        Load host ip, port, username, password, file path of remote host.
+        :return:
+        """
+        if self.redis_config is None:
+            return None
+        if not self.redis_config.__contains__('scp_host_ip'):
+            return None
+        if not self.redis_config.__contains__('scp_host_port'):
+            return None
+        if not self.redis_config.__contains__('scp_host_username'):
+            return None
+        if not self.redis_config.__contains__('scp_host_password'):
+            return None
+        if not self.redis_config.__contains__('file_upload_path'):
+            return None
+        if not self.redis_config.__contains__('img_upload_path'):
+            return None
+        return {
+            'host': self.redis_config['scp_host_ip'],
+            'port': self.redis_config['scp_host_port'],
+            'username': self.redis_config['scp_host_username'],
+            'password': self.redis_config['scp_host_password'],
+            'file_path': self.redis_config['file_upload_path'],
+            'img_path': self.redis_config['img_upload_path'],
+        }

+ 67 - 0
main.py

@@ -0,0 +1,67 @@
+#!/usr/bin/env python
+# -*- coding:utf-8 -*-
+import json
+import logging
+import logging.handlers
+import timing
+import threading
+import upload
+import config
+
+
+def format_logger(log_path):
+    logger = logging.getLogger()
+    rf = logging.handlers.TimedRotatingFileHandler(filename=log_path, when='S', interval=1, backupCount=3)
+    rf.setFormatter(logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s'))
+
+    handler = logging.StreamHandler()
+    handler.setLevel(logging.DEBUG)
+    handler.setFormatter(logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s'))
+
+    logger.addHandler(rf)
+    logger.addHandler(handler)
+    logging.root = logger
+
+
+if __name__ == '__main__':
+    # read local config
+    config_path = 'config.json'
+    conf = config.Config(config_path)
+
+    local_config = conf.read_local_config()
+    remote_config = conf.read_redis_config()
+
+    # init logger
+    log_path = local_config.get('log_path', 'elec_monitor.log')
+    format_logger(log_path)
+    logging.info('[MAIN] local config: %s', local_config)
+    logging.info('[MAIN] elec monitor init logger successful')
+
+    # timing server start
+    timing_tread = threading.Thread(target=timing.run, name='elec_timing_server')
+    timing_tread.setDaemon(True)
+    timing_tread.start()
+    logging.info('[MAIN] elec monitor init timing server successful')
+
+    # load redis config to init upload server
+    remote_host_config = conf.load_remote_host_config()
+    if remote_host_config is None:
+        logging.info('[MAIN] elec monitor load remote host successful but None')
+        exit(0)
+    logging.info('[MAIN] elec monitor load remote host successful: %s', remote_host_config)
+
+    # upload server start
+    logging.info('[MAIN] elec monitor will listen to upload server')
+    upload.defaultHandler = upload.Handle(
+        local_config['upload_max_length'],
+        local_config['upload_temp_file'],
+        local_config['upload_official_dir'],
+        local_config['upload_rubbish'],
+        remote_host_config['host'],
+        remote_host_config['port'],
+        remote_host_config['username'],
+        remote_host_config['password'],
+        remote_host_config['file_path'],
+        local_config['upload_interval'],
+    )
+    upload.listen()

rubbish/README.md → storage/rubbish/README.md


+ 1 - 1
upload_test.py

@@ -33,7 +33,7 @@ class UploadFileCheckTest(unittest.TestCase):
         official = 'test/official'
 
         print("-=-=-=-=")
-        upload.defaultHandler = upload.Handle(1, 'temp.txt', official, 'rubbish', host, port, user, passwd,
+        upload.defaultHandler = upload.Handle(1, 'temp.txt', official, 'storage/rubbish', host, port, user, passwd,
                                               'test/scp_generate')
 
         t = threading.Thread(target=upload.listen)