· 4 years ago · Jan 25, 2021, 11:24 PM
1#### server.py #######################################################
2from flask import Flask, Blueprint
3from flask_restful import Api, Resource, reqparse
4
5app = Flask(__name__)
6api_bp = Blueprint('api', __name__)
7api = Api(api_bp)
8parser = reqparse.RequestParser()
9parser.add_argument('status')
10parser.add_argument('error')
11parser.add_argument('transaction')
12
13
14class Status(Resource):
15 def post(self, app_id):
16 args = parser.parse_args()
17 print(f'Статус приложения {app_id}: {args.status}')
18 answer = {}
19 return answer
20
21
22class Errors(Resource):
23 def post(self, app_id):
24 args = parser.parse_args()
25 print(f'Ошибка в приложении {app_id}: {args.error}')
26 answer = {}
27 return answer
28
29
30class Transaction(Resource):
31 def post(self, app_id):
32 args = parser.parse_args()
33 print(f'Получена транзакция от приложения {app_id}: {args.transaction}')
34 answer = {'command': 'Транзакция получена сервером'}
35 return answer
36
37
38class Alarm(Resource):
39 def post(self, app_id):
40 print(f'Попытка взлома в приложении {app_id}, перезагрузить систему')
41 answer = {'command': 'reload'}
42 return answer
43
44
45api.add_resource(Status, '/api/status/<int:app_id>')
46api.add_resource(Errors, '/api/error/<int:app_id>')
47api.add_resource(Transaction, '/api/transaction/<int:app_id>')
48api.add_resource(Alarm, '/api/alarm/<int:app_id>')
49app.register_blueprint(api_bp)
50
51import os
52from config import configs
53
54evn = os.environ.get('FLASK_ENV', 'default')
55app.config.from_object(configs[evn])
56
57if __name__ == '__main__':
58 app.run()
59
60
61## config.py ####################################################
62
63
64import os
65
66
67class Config(object):
68 DEBUG = False
69 TESTING = False
70 SECRET_KEY = os.environ.get('SECRET_KEY', 'default secret')
71
72
73class ProductionConfig(Config):
74 pass
75
76
77class DevelopmentConfig(Config):
78 DEBUG = True
79
80
81class TestingConfig(Config):
82 TESTING = True
83
84
85configs = {
86 'dev': DevelopmentConfig,
87 'test': TestingConfig,
88 'prod': ProductionConfig,
89 'default': DevelopmentConfig
90}
91