py.lib

John Y. 2019-01-20 Parent:8c951e942fee

7:15fa2da6627d Go to Latest

py.lib/pgAdmin4_server.py

+ Смена сервера с gevent на waitress + Организация членораздельного информирования в случае отсутствия модуля waitress

History
awgur@4 1 # coding: utf-8
awgur@7 2 # devel.a0fs.net: pgadmin.selfServer - v0.2 by awgur $
awgur@4 3
awgur@4 4 ##########################################################################
awgur@4 5 #
awgur@4 6 # pgAdmin 4 - PostgreSQL Tools
awgur@4 7 #
awgur@4 8 # Copyright (C) 2013 - 2018, The pgAdmin Development Team
awgur@4 9 # This software is released under the PostgreSQL Licence
awgur@4 10 #
awgur@4 11 ##########################################################################
awgur@4 12
awgur@4 13 import os
awgur@4 14 import sys
awgur@7 15
awgur@7 16 try:
awgur@7 17 import waitress
awgur@7 18 except ImportError:
awgur@7 19 sys.stderr.write('\n ERROR: You need to install weitress module to you python instance\n\n')
awgur@7 20 sys.exit(1)
awgur@7 21
awgur@4 22 import logging
awgur@4 23 from logging.handlers import SysLogHandler
awgur@4 24
awgur@4 25
awgur@4 26 def prepLogger():
awgur@4 27 _format = 'lo.ad.pgadmin[%(process)d]: %(message)s'
awgur@4 28 _logHandler = SysLogHandler(address='/dev/log', facility='user')
awgur@4 29 _logHandler.setFormatter(logging.Formatter(_format))
awgur@4 30 logging.basicConfig(level=logging.INFO)
awgur@4 31 _log = logging.getLogger()
awgur@4 32 _log.handlers = [_logHandler,]
awgur@4 33
awgur@4 34 root = os.path.dirname(os.path.realpath(__file__))
awgur@4 35 if sys.path[0] != root:
awgur@4 36 sys.path.insert(0, root)
awgur@4 37
awgur@4 38 if sys.version_info[0] >= 3:
awgur@4 39 import builtins
awgur@4 40 else:
awgur@4 41 import __builtin__ as builtins
awgur@4 42
awgur@4 43 # Ensure the global server mode is set.
awgur@4 44 builtins.SERVER_MODE = True
awgur@4 45
awgur@4 46 import config
awgur@5 47 config.DATA_DIR = os.getenv('DATA_DIR') or config.DATA_DIR
awgur@5 48 config.SQLITE_PATH = os.getenv('SQLITE_PATH') or os.path.join(config.DATA_DIR, 'pgadmin4.db')
awgur@5 49 config.SESSION_DB_PATH = os.path.join(config.DATA_DIR, 'sessions')
awgur@5 50 config.STORAGE_DIR = os.path.join(config.DATA_DIR, 'storage')
awgur@5 51 config.TEST_SQLITE_PATH = os.path.join(config.DATA_DIR, 'test_pgadmin4.db')
awgur@6 52 config.LOG_FILE = os.path.join(config.DATA_DIR, 'pgadmin4.log')
awgur@5 53
awgur@4 54 # When running it as a WSGI application, directory for the configuration file
awgur@4 55 # must present.
awgur@4 56 if not os.path.exists(os.path.dirname(config.SQLITE_PATH)):
awgur@7 57 raise Exception(
awgur@7 58 """
awgur@7 59 Required configuration file is not present!
awgur@7 60 Please run setup.py first!"""
awgur@7 61 )
awgur@4 62
awgur@4 63 from pgAdmin4 import app as application
awgur@4 64 prepLogger()
awgur@4 65 log = logging.getLogger()
awgur@4 66
awgur@7 67 waitress.serve(application, host='0.0.0.0', port=44000)