Skip to content

Commit 63c182f

Browse files
committed
v0.1.15
1 parent 6d5bf70 commit 63c182f

File tree

5 files changed

+41
-14
lines changed

5 files changed

+41
-14
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,5 @@ venv/
2525
*.err
2626
service_id
2727
dist/
28-
.vscode/
28+
.vscode/
29+
build/

example/demo.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from flask_hsrpc.request_parser import BaseSchema, fields
66
from flask_hsrpc.response import ErrorResponse
77
from flask_hsrpc.__version__ import __version__ as hsrpc_version
8+
import logging
89

910

1011
class Config(object):
@@ -56,6 +57,15 @@ def log_demo():
5657
}
5758

5859

60+
@rpc.route(description="Log Demo 2")
61+
def log_demo2():
62+
logger = logging.getLogger("flask.app")
63+
logger.info("I am write log to file")
64+
return {
65+
"status": "ok"
66+
}
67+
68+
5969
@rpc.route(description="Request Demo")
6070
def request_demo():
6171
rel, err = rpc.apirequests.post("Demo", "log_demo")

flask_hsrpc/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# -*- coding: utf-8 -*-
2-
__version__ = '0.1.14'
2+
__version__ = '0.1.15'

flask_hsrpc/api_requests.py

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@
33
from .response import ErrorResponse
44

55

6+
class ApiRequestException(Exception):
7+
def __init__(self, **kwargs):
8+
self.code = kwargs.get("code")
9+
self.message = kwargs.get("message")
10+
self._request = kwargs.get("_request")
11+
self.kwargs = kwargs
12+
super().__init__(f"Hsrpc Api Request Error: {self.code} - {self.message} ({self._request})")
13+
14+
615
class ApiRequests(object):
716
consul = None
817

@@ -14,27 +23,34 @@ def __init__(self, consul=None, set_default=True):
1423

1524
def _base_request(self, method, sys_name, func_name, model_name="default", prefix="", protocol="http", **kwargs):
1625
node = self.consul.get_health_service_node_by_balance(sys_name)
26+
uri = [prefix if prefix and prefix != "/" else ""]
27+
if model_name and model_name != "default":
28+
uri.append(model_name.lower())
29+
uri.append(func_name)
1730
if node:
1831
host = node["Service"]["Address"]
1932
port = node["Service"]["Port"]
20-
uri = [prefix if prefix and prefix != "/" else ""]
21-
if model_name and model_name != "default":
22-
uri.append(model_name.lower())
23-
uri.append(func_name)
2433
url = "{protocol}://{host}:{port}{uri}".format(protocol=protocol, host=host, port=port, uri="/".join(uri))
2534
resp = request(method, url, **kwargs)
2635

2736
try:
2837
rel = resp.json()
2938
error = rel.get("error")
3039
if error:
31-
error["code"] = "request error: " + error["code"]
32-
error["message"] = f"request [{method}] - {sys_name} - {'/'.join(uri)} ({error['message']})"
33-
return rel.get("data"), ErrorResponse.convert_by_dict(rel.get("error"), resp.status_code)
34-
except Exception:
35-
raise Exception("request {0}-{1}-{2} fail".format(sys_name, model_name, func_name), resp.text)
40+
error["_request"] = f"[{method.upper()}] - {sys_name} - {host}:{port} - {'/'.join(uri)}"
41+
return rel.get("data"), ApiRequestException(**error)
42+
except Exception as ex:
43+
return None, ApiRequestException(**{
44+
"code": "request failed",
45+
"message": str(ex),
46+
"_request": f"[{method.upper()}] - {sys_name} - {host}:{port} - {'/'.join(uri)}"
47+
})
3648
else:
37-
raise Exception("[{0}]:not find alive system".format(sys_name))
49+
return None, ApiRequestException(**{
50+
"code": "request failed",
51+
"message": f"[{sys_name}: not find alive system]",
52+
"_request": f"[{method.upper()}] - {sys_name} - - {'/'.join(uri)}"
53+
})
3854

3955
def get(self, sys_name, func_name, model_name="default", prefix="", protocol="http", params=None, **kwargs):
4056
return self._base_request("get", sys_name, func_name, model_name, prefix, protocol, params=params, **kwargs)

flask_hsrpc/response.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def response_factory(data=None, error=None):
2121
"detail": None
2222
},
2323
"data": data
24-
})
24+
}), 500
2525
else:
2626
return jsonify({
2727
"error": None,
@@ -50,7 +50,7 @@ def convert_by_dict(err, status_code=400):
5050
return None
5151

5252
def __str__(self):
53-
return "ErrorResponse({},{},{}) {}".format(self.code,self.message,self.detail,self.status_code)
53+
return "ErrorResponse({},{},{}) {}".format(self.code, self.message, self.detail, self.status_code)
5454

5555

5656
def page_response(data, total):

0 commit comments

Comments
 (0)