tiangolo/fastapi

It throws an exception when I specify return Http status code

zjj0508 opened this issue · 0 comments

Privileged issue

  • I'm @tiangolo or he asked me directly to create an issue here.

Issue Content

ERROR: Exception in ASGI application
Traceback (most recent call last):
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 407, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 78, in call
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\fastapi\applications.py", line 1054, in call
await super().call(scope, receive, send)
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette\applications.py", line 123, in call
await self.middleware_stack(scope, receive, send)
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette\middleware\errors.py", line 186, in call
raise exc
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette\middleware\errors.py", line 164, in call
await self.app(scope, receive, _send)
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette\middleware\cors.py", line 83, in call
await self.app(scope, receive, send)
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette\middleware\exceptions.py", line 62, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette_exception_handler.py", line 64, in wrapped_app
raise exc
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
await app(scope, receive, sender)
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette\routing.py", line 758, in call
await self.middleware_stack(scope, receive, send)
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette\routing.py", line 778, in app
await route.handle(scope, receive, send)
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette\routing.py", line 299, in handle
await self.app(scope, receive, send)
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette\routing.py", line 79, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette_exception_handler.py", line 64, in wrapped_app
raise exc
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
await app(scope, receive, sender)
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette\routing.py", line 74, in app
response = await func(request)
^^^^^^^^^^^^^^^^^^^
File "D:\Desktop\Project\SMS\SMS\extention\logger\route_logger.py", line 268, in custom_route_handler
response: Response = await original_route_handler(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\fastapi\routing.py", line 278, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\fastapi\routing.py", line 193, in run_endpoint_function
return await run_in_threadpool(dependant.call, **values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette\concurrency.py", line 42, in run_in_threadpool
return await anyio.to_thread.run_sync(func, *args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\anyio\to_thread.py", line 56, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\anyio_backends_asyncio.py", line 2144, in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\anyio_backends_asyncio.py", line 851, in run
result = context.run(func, *args)
^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Desktop\Project\SMS\SMS\api\full_search\full_search_api.py", line 39, in search
return ParameterException("参数缺失!")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Desktop\Project\SMS\SMS\response\json_response.py", line 40, in init
super(ApiResponse, self).init(status_code=self.http_status_code, content=jsonable_encoder(body))
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette\responses.py", line 183, in init
super().init(content, status_code, headers, media_type, background)
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette\responses.py", line 42, in init
self.init_headers(headers)
File "C:\ProgramData\miniconda3\envs\SMS\Lib\site-packages\starlette\responses.py", line 69, in init_headers
and not (self.status_code < 200 or self.status_code in (204, 304))
^^^^^^^^^^^^^^^^^^^^^^
TypeError: '<' not supported between instances of 'str' and 'int'

class ApiResponse(JSONResponse):
http_status_code = 200 #:
code = 1 #:
result: Optional[Dict[str, Any]] = None #:
msg = 'success'
timestamp = int(time.time() * 1000)

def __init__(self, http_status_code=None, code=None, result=None, msg=None, **options):
    if result:
        self.result = result
    if msg:
        self.msg = msg
    if code:
        self.code = code
    if http_status_code:
        self.http_status_code = http_status_code

   
    body = dict(
        msg=self.msg,
        code=self.code,
        result=self.result,
        timestamp=self.timestamp,
        **options
    )
    super(ApiResponse, self).__init__(status_code=self.http_status_code, content=jsonable_encoder(body))