app.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import logging
  2. import os
  3. from flask import Flask, send_from_directory
  4. from flask_cors import CORS
  5. import route.analyze
  6. import route.result
  7. import route.upload
  8. from config import VERSION_PREFIX, MAX_CONTENT_LENGTH, MYSQL_URI, UPLOAD_DIR
  9. from db import db
  10. from route.util import make_response
  11. app = Flask(__name__)
  12. cors = CORS(app, resources={r"/*": {"origins": "*"}})
  13. app.config['MAX_CONTENT_LENGTH'] = MAX_CONTENT_LENGTH
  14. app.config['SQLALCHEMY_DATABASE_URI'] = MYSQL_URI
  15. app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
  16. app.register_blueprint(route.upload.bp, url_prefix=VERSION_PREFIX)
  17. app.register_blueprint(route.analyze.bp, url_prefix=VERSION_PREFIX)
  18. app.register_blueprint(route.result.bp, url_prefix=VERSION_PREFIX)
  19. db.init_app(app)
  20. with app.app_context():
  21. # db.drop_all()
  22. db.create_all()
  23. try:
  24. os.mkdir(UPLOAD_DIR + "/result")
  25. except:
  26. pass
  27. try:
  28. for i in os.listdir(UPLOAD_DIR):
  29. if i.endswith(".running"):
  30. os.remove(UPLOAD_DIR + "/" + i)
  31. except:
  32. pass
  33. @app.route("/")
  34. def hello_world():
  35. return "<p>Hello, World!</p>"
  36. @app.route("/file/<path:name>")
  37. def download_file(name):
  38. return send_from_directory(UPLOAD_DIR + '/result/', name)
  39. @app.errorhandler(413)
  40. def error_handler(e):
  41. logging.exception(e)
  42. return make_response(413, "entity too large, max acceptable: " + str(MAX_CONTENT_LENGTH) + " bytes", {})
  43. @app.errorhandler(404)
  44. def error_handler(e):
  45. logging.exception(e)
  46. return make_response(404, "path not found.", {})
  47. @app.errorhandler(Exception)
  48. def error_handler(e):
  49. logging.exception(e)
  50. return make_response(500, "unknown internal server error.", {})
  51. if __name__ == '__main__':
  52. app.run()