initialize.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from multiprocessing import JoinableQueue
  4. from flask import Flask, g
  5. import logging
  6. from logging.handlers import TimedRotatingFileHandler
  7. import json
  8. import os
  9. import sys
  10. import re
  11. import getopt
  12. import jimit as ji
  13. from jimvc_exception import PathNotExist
  14. from state_code import own_state_branch
  15. reload(sys)
  16. sys.setdefaultencoding('utf8')
  17. __author__ = 'James Iter'
  18. __date__ = '2017/3/21'
  19. __contact__ = 'james.iter.cn@gmail.com'
  20. __copyright__ = '(c) 2017 by James Iter.'
  21. app = Flask(__name__, template_folder='../templates', static_folder='../static')
  22. class Init(object):
  23. config = {
  24. 'config_file': '/etc/jimvc.conf'
  25. }
  26. @classmethod
  27. def load_config(cls):
  28. def usage():
  29. print "Usage:%s [-c] [--config]" % sys.argv[0]
  30. opts = None
  31. try:
  32. opts, args = getopt.getopt(sys.argv[1:], 'hc:',
  33. ['help', 'config='])
  34. except getopt.GetoptError as e:
  35. print str(e)
  36. usage()
  37. exit(e.message.__len__())
  38. for k, v in opts:
  39. if k in ("-h", "--help"):
  40. usage()
  41. exit()
  42. elif k in ("-c", "--config"):
  43. cls.config['config_file'] = v
  44. else:
  45. print "unhandled option"
  46. if not os.path.isfile(cls.config['config_file']):
  47. raise PathNotExist(u'配置文件不存在, 请配置 --> ', cls.config['config_file'])
  48. with open(cls.config['config_file'], 'r') as f:
  49. cls.config.update(json.load(f))
  50. return cls.config
  51. @classmethod
  52. def init_logger(cls):
  53. cls.config['log_file_base'] = '/'.join([sys.path[0], cls.config['log_file_dir'], 'log'])
  54. log_dir = os.path.dirname(cls.config['log_file_base'])
  55. if not os.path.isdir(log_dir):
  56. os.makedirs(log_dir, 0755)
  57. process_title = 'JimV-C'
  58. log_file_path = '.'.join([cls.config['log_file_base'], process_title])
  59. _logger = logging.getLogger(log_file_path)
  60. if cls.config['debug']:
  61. cls.config['DEBUG'] = True
  62. _logger.setLevel(logging.DEBUG)
  63. else:
  64. cls.config['DEBUG'] = False
  65. _logger.setLevel(logging.INFO)
  66. fh = TimedRotatingFileHandler(log_file_path, when=cls.config['log_cycle'], interval=1, backupCount=7)
  67. formatter = logging.Formatter(
  68. '%(asctime)s - %(name)s - %(levelname)s - %(funcName)s - %(lineno)s - %(message)s')
  69. fh.setFormatter(formatter)
  70. _logger.addHandler(fh)
  71. return _logger
  72. q_ws = JoinableQueue()
  73. # 预编译效率更高
  74. regex_sql_str = re.compile('\\\+"')
  75. regex_dsl_str = re.compile('^\w+:\w+:[\S| ]+$')
  76. config = Init.load_config()
  77. logger = Init.init_logger()
  78. app.config = dict(app.config, **config)
  79. ji.index_state['branch'] = dict(ji.index_state['branch'], **own_state_branch)
  80. # sequence_device_node_mapping = ['vda', 'vdb', 'vdc', 'vdd']
  81. dev_table = ['vda', 'vdb', 'vdc', 'vdd']