Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
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