def start(self): """Start serving a WSGI application. :returns: None """ # The server socket object will be closed after server exits, # but the underlying file descriptor will remain open, and will # give bad file descriptor error. So duplicating the socket object, # to keep file descriptor usable. self.dup_socket = self.socket.dup() # set close exec to dup_socket and socket self.close_exec() wsgi_kwargs = { 'func': eventlet.wsgi.server, 'sock': self.dup_socket, 'site': self.app, 'protocol': self._protocol, 'custom_pool': self._pool, # 'log': self._logger, 'log': logging.getLogger('eventlet.wsgi'), 'log_format': self.conf.wsgi_log_format, 'debug': False, 'keepalive': self.conf.wsgi_keep_alive, 'socket_timeout': self.client_socket_timeout } if self._max_url_len: wsgi_kwargs['url_length_limit'] = self._max_url_len self._server = eventlet.spawn(**wsgi_kwargs)
import sqlalchemy.engine.url from sqlalchemy import event from sqlalchemy.pool import NullPool from sqlalchemy.sql.expression import select from simpleutil.log import log as logging from simpleservice.ormdb import exceptions from simpleservice.ormdb import exc_filters from simpleservice.ormdb.argformater import init_connection_args from simpleservice.ormdb.argformater import init_events from simpleservice.ormdb.argformater import template from simpleservice.ormdb.argformater import connformater LOG = logging.getLogger(__name__) def _connect_ping_listener(connection, branch): """Ping the server at connection startup. Ping the server at transaction begin and transparently reconnect if a disconnect exception occurs. """ if branch: return # turn off "close with result". This can also be accomplished # by branching the connection, however just setting the flag is # more performant and also doesn't get involved with some # connection-invalidation awkardness that occurs (see