代码目录

du dir desc loc
424K alembic 数据库变更脚本 3130
532K api 接口处理 8079
700K base 6155
2.1M components 各个组件 36856
8.0K core 一点都不core
424K custom 处理自定义组件, 自定义代码 3956
16K events
28K exceptions
32K field_typing
632K graph 图&节点处理 6217
88K helpers
3.1M initial_setup 初始化模版项目 1531
92K inputs inputs
80K interface
24K io
24K load 380
48K logging
36K processing
244K schema 数据结构定义Data/Message 1983
48K serialization
1.4M services 各核心服务 10593
120K template 958
16K type_extraction
180K utils 2146

87889 Total

服务器启动入口

fastapi项目, 异步http服务器, API接口入口都在 base/langflow/api/v1里

内部Service设计

感觉是写java人搞的:)

langflow/services

ServiceManager (manager.py)

deps.get_service

service_manager = ServiceManager() # 全局的service管理对象, 从他这get

    def get(self, service_name: ServiceType, default: ServiceFactory | None = None) -> Service:
        """Get (or create) a service by its name."""
        with self.keyed_lock.lock(service_name):
            if service_name not in self.services:
                self._create_service(service_name, default)
​
        return self.services[service_name]

可以看出是全局单例的服务对象

注册