py.lib
2019-01-20
Parent:8c951e942fee
py.lib/pgAdmin4_server.py
+ Смена сервера с gevent на waitress + Организация членораздельного информирования в случае отсутствия модуля waitress
| 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) |