app.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import logging
  2. import multiprocessing
  3. from flask import Flask
  4. from lakesuperior.endpoints.admin import admin
  5. from lakesuperior.endpoints.ldp import ldp
  6. from lakesuperior.endpoints.main import main
  7. from lakesuperior.endpoints.query import query
  8. logger = logging.getLogger(__name__)
  9. def create_app(app_conf):
  10. '''
  11. App factory.
  12. Create a Flask app.
  13. @param app_conf (dict) Configuration parsed from `application.yml` file.
  14. '''
  15. app = Flask(__name__)
  16. app.config.update(app_conf)
  17. pid = multiprocessing.current_process().pid
  18. logger.info('Starting Lakesuperior HTTP server with PID: {}.'.format(pid))
  19. app.register_blueprint(main)
  20. app.register_blueprint(ldp, url_prefix='/ldp', url_defaults={
  21. 'url_prefix': 'ldp'
  22. })
  23. # Legacy endpoint. @TODO Deprecate.
  24. app.register_blueprint(ldp, url_prefix='/rest', url_defaults={
  25. 'url_prefix': 'rest'
  26. })
  27. app.register_blueprint(query, url_prefix='/query')
  28. app.register_blueprint(admin, url_prefix='/admin')
  29. return app