fastapi里的background实现逻辑

Fastapi框架里自带了处理后台任务的功能, 文档在https://fastapi.tiangolo.com/zh/tutorial/background-tasks/?h=back

好奇它的实现方式, 于是看了下源代码, 记录一下, fastapi是封装了starlette, 所以这部分逻辑也在starlette的源代码里

  • 在starlette的response.py里


    image.png
  • Response类的__call__方法, 会调用self.background
    self.background是一个BackgroundTasks
    这个类有一个add_task方法, 就是官方文档里的把后台函数添加到BackgroundTasks里的

  • 然后, 这个__call__方法循环取出每一个task

    image.png

  • 最后在这里真正的用心的线程来跑后台任务
  • 用的是anyio来起的线程


    image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容