예제 #1
0
import sys
import time
from challenge import views
from challenge.config import get_config
from challenge.server import Server

from challenge.models import Base
from challenge.models.orm import Orm

config_challenge = get_config()


def init_db(orm):
    """Create Database."""
    import challenge.models.payments
    import challenge.models.boleto
    import challenge.models.credit_card
    Base.metadata.create_all(bind=orm.engine)


def delete_all(orm):
    """Delete all database."""
    # Base.metadata.reflect(bind=engine, extend_existing=True)
    Base.metadata.drop_all(bind=orm.engine)
    # db_session.expunge_all()


def start():
    server = Server(instances=config_challenge.AMOUNT_PROCESS,
                    port=config_challenge.PORT_SERVER)
    server.start(views)
예제 #2
0
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

from challenge.service import Singleton
from challenge.config import get_config

config = get_config()


class Orm(metaclass=Singleton):
    """Relation Object."""
    __TYPE__ = "abstract"

    def __init__(self):
        self.__engine = create_engine(
            config.SQLALCHEMY_DATABASE_URI,
            pool_pre_ping=True,
            pool_size=config.SQLALCHEMY_POOL_SIZE,
        )
        self.__db_session = scoped_session(
            sessionmaker(autocommit=False, autoflush=False,
                         bind=self.__engine))

    @property
    def session(self):
        """Property db_session."""
        return self.__db_session

    @property
    def engine(self):
        """Property engine."""
예제 #3
0
from challenge.config import get_config
from sqlalchemy import Column, DateTime, func
from sqlalchemy.ext.declarative import declarative_base

from .orm import Orm

config_neighbors = get_config()
Base = declarative_base()


class BaseModel(Base):
    """Defaut Classe to tables of system."""

    __abstract__ = True
    __TYPE__ = "abstract"
    date_created = Column(DateTime, default=func.current_timestamp())
    date_modified = Column(DateTime,
                           default=func.current_timestamp(),
                           onupdate=func.current_timestamp())

    @property
    def __orm(self):
        return Orm()

    @property
    def session(self):
        return self.__orm.session

    def remove_session(self):
        """Method clear session sqlalchemy."""
        self.__orm.remove_session()
예제 #4
0
import logging
import multiprocessing
from concurrent.futures import ThreadPoolExecutor

from tornado.concurrent import Future, chain_future
from tornado.ioloop import IOLoop
from tornado.web import RequestHandler

from challenge.config import get_config
from challenge.exceptions import ERRORS_CHALLENGE

COUNT_CPU = multiprocessing.cpu_count()
config_ = get_config()
logger = logging.getLogger(__file__)


class ApiJsonHandler(RequestHandler):
    """Class default to create views."""
    def initialize(self):
        self.set_header("Content-Type", "application/json")

    @property
    def _message_error_default(self):
        """Error Internal Server."""
        return "Error Internal Server"

    def _execute_ioloop(self, func, *args):
        """Execute method ioloop."""
        pool = ThreadPoolExecutor(max_workers=COUNT_CPU)
        old_future = pool.submit(func, *args)
        new_future = Future()