Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eastwu5788/mask
A gRpc server like Flask (像Flask一样的gRpc服务)
https://github.com/eastwu5788/mask
flask flask-sqlalchemy grpc
Last synced: 2 months ago
JSON representation
A gRpc server like Flask (像Flask一样的gRpc服务)
- Host: GitHub
- URL: https://github.com/eastwu5788/mask
- Owner: Eastwu5788
- License: mit
- Created: 2021-05-26T02:05:27.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2021-07-16T05:19:21.000Z (over 3 years ago)
- Last Synced: 2024-10-01T16:56:01.451Z (3 months ago)
- Topics: flask, flask-sqlalchemy, grpc
- Language: Python
- Homepage:
- Size: 269 KB
- Stars: 17
- Watchers: 2
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Mask
A gRpc server just like `Flask`.
### Install
`Mask` support pypi packages, you can simply install by:
```
pip install mask
```### Document
`Mask` manual could be found at: https://mask.readthedocs.io/en/latest
### A Simple Example
This is very easy to use `Mask` in your project.
```
from mask import Mask
from mask.parse import pre, Ruleapp = Mask(__name__)
rule = {
"name": Rule(type=str, gte=2, dest="Name")
}@app.route(method="SayHello", service="Hello")
def say_hello(request, context):
""" Handler SayHello request
"""
params = pre.parse(rule=rule, request=request, context=context)
return HelloResponse(message="Hello Reply: %s" % params["Name"])if __name__ == "__main__":
app.run(host="0.0.0.0", port=1020)
```### Service
`Mask` support `Service` to organize a group of route which is likely with `Blueprint` in `Flask`.
```
# 3p
from mask import Mask, Service
from mask.parse import pre, Rule
# project
from examples.protos.hello_pb2 import HelloResponseapp = Mask(__name__)
app.config["REFLECTION"] = True# Bind service to application
service = Service(name="Hello")
app.register_service(service)rule = {
"name": Rule(type=str, gte=2, dest="Name")
}# Service route
@service.route(method="SayHello")
def say_hello_handler(request, context):
""" Handler SayHello request
"""
params = pre.parse(rule=rule, request=request, context=context)
return HelloResponse(message="Hello Reply: %s" % params["Name"])if __name__ == "__main__":
app.run(host="0.0.0.0", port=1020)```
### Middleware
`Mask` support middleware to hook before request and after request.
```
# 3p
from mask import Mask
# project
from examples.protos.hello_pb2 import HelloResponseapp = Mask(__name__)
app.config["REFLECTION"] = Truedef before_request(request, context):
print(request.name)def after_request(response):
print(response.message)app.before_request(before_request)
app.after_request(after_request)@app.route(method="SayHello", service="Hello")
def say_hello_handler(request, context):
""" Handler SayHello request
"""
return HelloResponse(message="Hello Reply: %s" % request.name)if __name__ == "__main__":
app.run(host="0.0.0.0", port=1020)
```### Coffee
Please give me a cup of coffee, thank you!
BTC: 1657DRJUyfMyz41pdJfpeoNpz23ghMLVM3
ETH: 0xb098600a9a4572a4894dce31471c46f1f290b087
### Links
* Documentaion: https://mask.readthedocs.io/en/latest
* Release: https://github.com/Eastwu5788/Mask/releases
* Code: https://github.com/Eastwu5788/Mask
* Issue tracker: https://github.com/Eastwu5788/Mask/issues
* Test status: https://coveralls.io/github/Eastwu5788/Mask