-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
312 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
.PHONY: start | ||
## Start server start with gunicorn | ||
start: | ||
@echo -n "Start demo services with uvicorn: " | ||
@exec gunicorn -c gunicorn_conf.py main:app | ||
|
||
|
||
.DEFAULT_GOAL := help | ||
|
||
# Inspired by <http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html> | ||
# sed script explained: | ||
# /^##/: | ||
# * save line in hold space | ||
# * purge line | ||
# * Loop: | ||
# * append newline + line to hold space | ||
# * go to next line | ||
# * if line starts with doc comment, strip comment character off and loop | ||
# * remove target prerequisites | ||
# * append hold space (+ newline) to line | ||
# * replace newline plus comments by `---` | ||
# * print line | ||
# Separate expressions are necessary because labels cannot be delimited by | ||
# semicolon; see <http://stackoverflow.com/a/11799865/1968> | ||
.PHONY: help | ||
help: | ||
@echo "$$(tput bold)Available rules:$$(tput sgr0)" | ||
@echo | ||
@sed -n -e "/^## / { \ | ||
h; \ | ||
s/.*//; \ | ||
:doc" \ | ||
-e "H; \ | ||
n; \ | ||
s/^## //; \ | ||
t doc" \ | ||
-e "s/:.*//; \ | ||
G; \ | ||
s/\\n## /---/; \ | ||
s/\\n/ /g; \ | ||
p; \ | ||
}" ${MAKEFILE_LIST} \ | ||
| LC_ALL='C' sort --ignore-case \ | ||
| awk -F '---' \ | ||
-v ncol=$$(tput cols) \ | ||
-v indent=19 \ | ||
-v col_on="$$(tput setaf 6)" \ | ||
-v col_off="$$(tput sgr0)" \ | ||
'{ \ | ||
printf "%s%*s%s ", col_on, -indent, $$1, col_off; \ | ||
n = split($$2, words, " "); \ | ||
line_length = ncol - indent; \ | ||
for (i = 1; i <= n; i++) { \ | ||
line_length -= length(words[i]) + 1; \ | ||
if (line_length <= 0) { \ | ||
line_length = ncol - indent - length(words[i]) - 1; \ | ||
printf "\n%*s ", -indent, " "; \ | ||
} \ | ||
printf "%s ", words[i]; \ | ||
} \ | ||
printf "\n"; \ | ||
}' \ | ||
| more $(shell test $(shell uname) = Darwin && echo '--no-init --raw-control-chars') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
import logging | ||
|
||
from request_id_helper import RequestIdFormatter | ||
|
||
# Gunicorn config | ||
workers = 1 | ||
worker_class = "uvicorn.workers.UvicornWorker" | ||
|
||
# Logging Options | ||
loglevel = "info" | ||
logconfig_dict = { | ||
"version": 1, | ||
"disable_existing_loggers": False, | ||
"formatters": { | ||
"default": { | ||
"()": RequestIdFormatter, | ||
"format": "[%(asctime)s] %(levelname)s [%(request_id)s] %(name)s | %(message)s", | ||
"datefmt": "%d/%b/%Y %H:%M:%S", | ||
}, | ||
}, | ||
"handlers": { | ||
"console": { | ||
"class": "logging.StreamHandler", | ||
"formatter": "default", | ||
}, | ||
}, | ||
"loggers": { | ||
"gunicorn.error": { | ||
"level": "INFO", | ||
"handlers": ["console"], | ||
"propagate": False, | ||
}, | ||
"gunicorn.access": { | ||
"level": "INFO", | ||
"handlers": ["console"], | ||
"propagate": False, | ||
}, | ||
}, | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
import uvicorn | ||
from starlette.applications import Starlette | ||
from starlette.responses import PlainTextResponse | ||
|
||
from starlette_request_id import REQUEST_ID_HEADER, RequestIdMiddleware, init_logger, request_id_ctx | ||
|
||
LOGGING = { | ||
"version": 1, | ||
"disable_existing_loggers": 0, | ||
"formatters": { | ||
"default": { | ||
"()": "request_id_helper.RequestIdFormatter", | ||
"format": "[%(asctime)s] %(levelname)s [%(request_id)s] %(name)s | %(message)s", | ||
"datefmt": "%d/%b/%Y %H:%M:%S", | ||
} | ||
}, | ||
"handlers": { | ||
"stdout": { | ||
"level": "INFO", | ||
"class": "logging.StreamHandler", | ||
"formatter": "default", | ||
}, | ||
}, | ||
"loggers": { | ||
"": { | ||
"handlers": ["stdout"], | ||
"propagate": True, | ||
"level": "INFO", | ||
}, | ||
}, | ||
} | ||
|
||
|
||
def init_app(): | ||
init_logger(LOGGING) | ||
|
||
app_ = Starlette() | ||
app_.add_middleware(RequestIdMiddleware) | ||
|
||
@app_.route("/") | ||
def success(request): | ||
return PlainTextResponse(f"Request id: {request_id_ctx.get()}", status_code=200) | ||
|
||
return app_ | ||
|
||
|
||
app = init_app() | ||
|
||
if __name__ == "__main__": | ||
uvicorn.run( | ||
app=app, | ||
log_config=LOGGING, | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
starlette-request-id | ||
gunicorn |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
.PHONY: start | ||
## Start server | ||
start: | ||
@echo -n "Start demo services: " | ||
@exec python main.py | ||
|
||
.PHONY: start/uvicorn | ||
## Start server start with uvicorn | ||
start/uvicorn: | ||
@echo -n "Start demo services with uvicorn: " | ||
@exec uvicorn main:app --reload --log-config log_config.yaml | ||
|
||
|
||
.DEFAULT_GOAL := help | ||
|
||
# Inspired by <http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html> | ||
# sed script explained: | ||
# /^##/: | ||
# * save line in hold space | ||
# * purge line | ||
# * Loop: | ||
# * append newline + line to hold space | ||
# * go to next line | ||
# * if line starts with doc comment, strip comment character off and loop | ||
# * remove target prerequisites | ||
# * append hold space (+ newline) to line | ||
# * replace newline plus comments by `---` | ||
# * print line | ||
# Separate expressions are necessary because labels cannot be delimited by | ||
# semicolon; see <http://stackoverflow.com/a/11799865/1968> | ||
.PHONY: help | ||
help: | ||
@echo "$$(tput bold)Available rules:$$(tput sgr0)" | ||
@echo | ||
@sed -n -e "/^## / { \ | ||
h; \ | ||
s/.*//; \ | ||
:doc" \ | ||
-e "H; \ | ||
n; \ | ||
s/^## //; \ | ||
t doc" \ | ||
-e "s/:.*//; \ | ||
G; \ | ||
s/\\n## /---/; \ | ||
s/\\n/ /g; \ | ||
p; \ | ||
}" ${MAKEFILE_LIST} \ | ||
| LC_ALL='C' sort --ignore-case \ | ||
| awk -F '---' \ | ||
-v ncol=$$(tput cols) \ | ||
-v indent=19 \ | ||
-v col_on="$$(tput setaf 6)" \ | ||
-v col_off="$$(tput sgr0)" \ | ||
'{ \ | ||
printf "%s%*s%s ", col_on, -indent, $$1, col_off; \ | ||
n = split($$2, words, " "); \ | ||
line_length = ncol - indent; \ | ||
for (i = 1; i <= n; i++) { \ | ||
line_length -= length(words[i]) + 1; \ | ||
if (line_length <= 0) { \ | ||
line_length = ncol - indent - length(words[i]) - 1; \ | ||
printf "\n%*s ", -indent, " "; \ | ||
} \ | ||
printf "%s ", words[i]; \ | ||
} \ | ||
printf "\n"; \ | ||
}' \ | ||
| more $(shell test $(shell uname) = Darwin && echo '--no-init --raw-control-chars') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
version: 1 | ||
disable_existing_loggers: False | ||
|
||
formatters: | ||
default: | ||
(): starlette_request_id.request_id_formatter.RequestIdFormatter | ||
format: "[%(asctime)s] %(levelname)s [%(request_id)s] %(name)s | %(message)s" | ||
datefmt: "%d/%b/%Y %H:%M:%S" | ||
|
||
handlers: | ||
console: | ||
class: logging.StreamHandler | ||
formatter: default | ||
stream: ext://sys.stdout | ||
|
||
loggers: | ||
uvicorn: | ||
level: INFO | ||
handlers: [console] | ||
propagate: no | ||
uvicorn.error: | ||
level: INFO | ||
handlers: [console] | ||
propagate: no | ||
uvicorn.access: | ||
level: INFO | ||
handlers: [console] | ||
propagate: no |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
import uvicorn | ||
from starlette.applications import Starlette | ||
from starlette.responses import PlainTextResponse | ||
|
||
from starlette_request_id import REQUEST_ID_HEADER, RequestIdMiddleware, init_logger, request_id_ctx | ||
|
||
LOGGING = { | ||
"version": 1, | ||
"disable_existing_loggers": 0, | ||
"formatters": { | ||
"default": { | ||
"()": "request_id_helper.RequestIdFormatter", | ||
"format": "[%(asctime)s] %(levelname)s [%(request_id)s] %(name)s | %(message)s", | ||
"datefmt": "%d/%b/%Y %H:%M:%S", | ||
} | ||
}, | ||
"handlers": { | ||
"stdout": { | ||
"level": "INFO", | ||
"class": "logging.StreamHandler", | ||
"formatter": "default", | ||
}, | ||
}, | ||
"loggers": { | ||
"": { | ||
"handlers": ["stdout"], | ||
"propagate": True, | ||
"level": "INFO", | ||
}, | ||
}, | ||
} | ||
|
||
|
||
def init_app(): | ||
init_logger(LOGGING) | ||
|
||
app_ = Starlette() | ||
app_.add_middleware(RequestIdMiddleware) | ||
|
||
@app_.route("/") | ||
def success(request): | ||
return PlainTextResponse(f"Request id: {request_id_ctx.get()}", status_code=200) | ||
|
||
return app_ | ||
|
||
|
||
app = init_app() | ||
|
||
if __name__ == "__main__": | ||
uvicorn.run( | ||
app=app, | ||
log_config=LOGGING, | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
starlette-request-id | ||
uvicorn |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
__all__ = "VERSION" | ||
|
||
VERSION = "1.2.0" | ||
VERSION = "1.2.1" |