Skip to content

Commit 3d0a759

Browse files
committed
closes #8: replacing hypercorn with granian
1 parent ab056ca commit 3d0a759

File tree

3 files changed

+15
-23
lines changed

3 files changed

+15
-23
lines changed

{{cookiecutter.project_slug}}/entrypoint.sh

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22
set -eox pipefail
33

44
if [ "$ENV" != 'production' ]; then
5-
exec hypercorn --reload --worker-class={{cookiecutter.worker_class}} --bind=0.0.0.0:5000 \
6-
--error-logfile=- --root-path /api \
7-
{{cookiecutter.project_slug}}.main:app
5+
exec granian --reload --loop {{cookiecutter.worker_class}} --host 0.0.0.0 --port 5000 \
6+
--url-path-prefix /api --interface asgi {{cookiecutter.project_slug}}.main:app
87
else
9-
exec hypercorn --worker-class={{cookiecutter.worker_class}} --bind=0.0.0.0:5000 --error-logfile=- \
10-
--error-logfile=- --root-path /api \
11-
{{cookiecutter.project_slug}}.main:app
8+
exec granian --loop {{cookiecutter.worker_class}} --host 0.0.0.0 --port 5000 \
9+
--url-path-prefix /api --interface asgi {{cookiecutter.project_slug}}.main:app
1210
fi

{{cookiecutter.project_slug}}/pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ requires-python = "~={{cookiecutter.python_version}}.0"
99
readme = "README.rst"
1010
dependencies = [
1111
"fastapi",
12+
"granian[reload,uvloop]",
1213
"hypercorn",
1314
"loguru",
1415
"orjson",

{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/middleware.py

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
from fastapi import Request, Response
66
from fastapi.responses import PlainTextResponse
7-
from hypercorn.logging import AccessLogAtoms
87
from loguru import logger
98

109
from . import config
@@ -27,26 +26,20 @@ async def log_request_middleware(request: Request, call_next: Callable) -> Respo
2726
response = PlainTextResponse('Internal Server Error', status_code=500)
2827
final_time = time()
2928
elapsed = final_time - start_time
30-
response_dict = {
31-
'status': response.status_code,
32-
'headers': response.headers.raw,
33-
}
34-
atoms = AccessLogAtoms(request, response_dict, final_time) # type: ignore
35-
try:
36-
response_length = int(atoms['B'])
37-
except ValueError:
38-
response_length = 0
29+
response_length = request.headers.get('content-length', 0)
30+
query_string = request['query_string'].decode()
31+
path_with_qs = request['path'] + ('?' + query_string if query_string else '')
3932
data = {
40-
'remote_ip': request.headers.get('x-forwarded-for') or atoms['h'],
41-
'schema': request.headers.get('x-forwarded-proto') or atoms['S'],
42-
'protocol': atoms['H'],
43-
'method': atoms['m'],
44-
'path_with_query': atoms['Uq'],
33+
'remote_ip': request.headers.get('x-forwarded-for') or request['client'],
34+
'schema': request.headers.get('x-forwarded-proto') or request['scheme'],
35+
'protocol': request.get('http_version', 'ws'),
36+
'method': request.get('method', 'GET'),
37+
'path_with_query': path_with_qs,
4538
'status_code': response.status_code,
4639
'response_length': response_length,
4740
'elapsed': elapsed,
48-
'referer': atoms['f'],
49-
'user_agent': atoms['a'],
41+
'referer': request.headers.get('referer', ''),
42+
'user_agent': request.headers.get('user-agent', ''),
5043
}
5144
if not exception:
5245
logger.info('log request', **data)

0 commit comments

Comments
 (0)