|
1 | | -# encoding: utf-8 |
| 1 | +from pyms.flask.app import Microservice |
2 | 2 |
|
3 | | -import logging |
4 | | -import os |
5 | | - |
6 | | -import connexion |
7 | | -from flask_injector import FlaskInjector |
8 | | -from injector import Injector |
9 | | - |
10 | | -from project.config import CONFIG |
11 | | -from pyms.healthcheck import healthcheck_blueprint |
12 | | -from pyms.logger import CustomJsonFormatter |
13 | | -from pyms.models import db |
14 | | -from pyms.tracer.main import TracerModule |
| 3 | +from project.models.init_db import db |
15 | 4 |
|
16 | 5 | __author__ = "Alberto Vara" |
17 | 6 | __email__ = "a.vara.1986@gmail.com" |
18 | | -__version__ = "0.2" |
| 7 | +__version__ = "0.3.1" |
19 | 8 |
|
20 | | -logger = logging.getLogger('jaeger_tracing') |
21 | | -logger.setLevel(logging.DEBUG) |
22 | 9 |
|
23 | | -ENVIRONMENT = os.environ.get("ENVIRONMENT", "default") |
| 10 | +class MyMicroservice(Microservice): |
| 11 | + def init_libs(self, app): |
| 12 | + db.init_app(app) |
| 13 | + with app.test_request_context(): |
| 14 | + db.create_all() |
24 | 15 |
|
25 | 16 |
|
26 | 17 | def create_app(): |
27 | 18 | """Initialize the Flask app, register blueprints and intialize all libraries like Swagger, database, the trace system... |
28 | 19 | return the app and the database objects. |
29 | 20 | :return: |
30 | 21 | """ |
31 | | - environment = os.environ.get("ENVIRONMENT", "default") |
32 | | - |
33 | | - app = connexion.App(__name__, specification_dir='./swagger/') |
34 | | - # app.app.json_encoder = encoder.JSONEncoder |
35 | | - |
36 | | - app.add_api('swagger.yaml', |
37 | | - arguments={'title': 'Swagger Example Project'}, |
38 | | - base_path=CONFIG[environment].APPLICATION_ROOT) |
39 | | - |
40 | | - application = app.app |
41 | | - application.config.from_object(CONFIG[environment]) |
42 | | - db.init_app(application) |
43 | | - |
44 | | - # Initialize Blueprints |
45 | | - application.register_blueprint(healthcheck_blueprint) |
46 | | - |
47 | | - # Inject Modules |
48 | | - if not application.config["TESTING"] and not application.config["DEBUG"]: |
49 | | - log_handler = logging.StreamHandler() |
50 | | - formatter = CustomJsonFormatter('(timestamp) (level) (name) (module) (funcName) (lineno) (message)') |
51 | | - formatter.add_service_name(application.config["APP_NAME"]) |
52 | | - tracer = TracerModule(application) |
53 | | - injector = Injector([tracer]) |
54 | | - FlaskInjector(app=application, injector=injector) |
55 | | - formatter.add_trace_span(tracer.tracer) |
56 | | - log_handler.setFormatter(formatter) |
57 | | - application.logger.addHandler(log_handler) |
58 | | - application.logger.setLevel(logging.INFO) |
59 | | - |
60 | | - with application.test_request_context(): |
61 | | - db.create_all() |
62 | | - |
63 | | - return application, db |
| 22 | + ms = MyMicroservice(service="ms", path=__file__) |
| 23 | + return ms.create_app() |
0 commit comments