madkote / fastapi-plugins

FastAPI framework plugins
MIT License
366 stars 21 forks source link

The startup example codes do not work, cannot `Depends` fastapi_plugins.depends_redis #14

Closed tearf001 closed 3 years ago

tearf001 commented 3 years ago

I test fastapi-plugins using the example codes ,but it corrupts with

fastapi.exceptions.FastAPIError: Invalid args for response field! 
Hint: check that <class 'starlette.requests.HTTPConnection'> is a valid pydantic field type

the codes all go here

import fastapi, fastapi_plugins
import aioredis, pydantic, typing

@fastapi_plugins.registered_configuration
class AppSettings(
        fastapi_plugins.ControlSettings,
        fastapi_plugins.RedisSettings,
        fastapi_plugins.SchedulerSettings
):
    api_name: str = str(__name__)

app = fastapi.FastAPI()
config = fastapi_plugins.get_config()

@app.get("/")
async def root_get(
        cache: aioredis.Redis=fastapi.Depends(fastapi_plugins.depends_redis), # TODO corrupts here,
        conf: pydantic.BaseSettings=fastapi.Depends(fastapi_plugins.depends_config) # noqa E501
) -> typing.Dict:
    return dict(ping=await cache.ping(), api_name=conf.api_name)

@app.on_event('startup')
async def on_startup() -> None:
    await fastapi_plugins.config_plugin.init_app(app, config)
    await fastapi_plugins.config_plugin.init()
    await fastapi_plugins.redis_plugin.init_app(app, config=config)
    await fastapi_plugins.redis_plugin.init()
    await fastapi_plugins.scheduler_plugin.init_app(app=app, config=config)
    await fastapi_plugins.scheduler_plugin.init()
    await fastapi_plugins.control_plugin.init_app(app, config=config, version="0.0.1", environ=config.dict())
    await fastapi_plugins.control_plugin.init()

@app.on_event('shutdown')
async def on_shutdown() -> None:
    await fastapi_plugins.control_plugin.terminate()
    await fastapi_plugins.scheduler_plugin.terminate()
    await fastapi_plugins.redis_plugin.terminate()
    await fastapi_plugins.config_plugin.terminate()

packages info:

pip show fastapi-plugins
#Name: fastapi-plugins
#Version: 0.8.1
pip show fastapi
#Name: fastapi
#Version: 0.54.2

what have I missed?

tearf001 commented 3 years ago

I found it! It is a dependency problem. when I upgraded fastapi to the latest `0.63.0' version. it worked.

my project booted weeks ago ,but poetry resolve fastapi in an old version, i should findout why

madkote commented 3 years ago

@tearf001 thanks for reporting - I will check that anyway. it is supposed to work with most of version of fastapi.