首页 > 其他分享 >chainlit 实际部署一些问题

chainlit 实际部署一些问题

时间:2024-10-13 08:53:19浏览次数:7  
标签:target 部署 module 实际 chainlit io server spec

chainlit内部基于了socket.io 进行消息处理,socket.io 是有一些缺陷的,但是也有相关的解决方法,同时
对于启动的入口是加载的一个python 文件,这个处理上是动态加载里边的方法到chainlit 运行环境的

内部一些处理

  • load 模块处理
def load_module(target: str, force_refresh: bool = False):
    """Load the specified module."""
 
    # Get the target's directory
    target_dir = os.path.dirname(os.path.abspath(target))
 
    # Add the target's directory to the Python path
    sys.path.insert(0, target_dir)
 
    if force_refresh:
        # Get current site packages dirs
        site_package_dirs = site.getsitepackages()
 
        # Clear the modules related to the app from sys.modules
        for module_name, module in list(sys.modules.items()):
            if (
                hasattr(module, "__file__")
                and module.__file__
                and module.__file__.startswith(target_dir)
                and not any(module.__file__.startswith(p) for p in site_package_dirs)
            ):
                sys.modules.pop(module_name, None)
 
    spec = util.spec_from_file_location(target, target)
    if not spec or not spec.loader:
        return
 
    module = util.module_from_spec(spec)
    if not module:
        return
 
    spec.loader.exec_module(module)
 
    sys.modules[target] = module
 
    # Remove the target's directory from the Python path
    sys.path.pop(0)
  • server 启动
    server的启动是基于fastapi + uvicorn 的
async def start():
    config = uvicorn.Config(
        app,
        host=host,
        port=port,
        ws=ws_protocol,
        log_level=log_level,
        ws_per_message_deflate=ws_per_message_deflate,
        ssl_keyfile=ssl_keyfile,
        ssl_certfile=ssl_certfile,
    )
    server = uvicorn.Server(config)
    await server.serve()
# Run the asyncio event loop instead of uvloop to enable re entrance
asyncio.run(start())

一些问题

目前对于uvicorn 如果需要开启多worker 需要使用 string 的模式传递应用,所以目前的模式是不能支持多worker的,可以调整,但是因为上边动态加载python 代码的问题,造成worker对于chainlit 应用加载会有问题,修改之后 ,因为多worker 运行 ,socket.io 会存在session 不一致的问题,应该基于sticky-session 解决方法,socket.io的adapter 是一种解决方法,但是是多server
消息广播的

说明

目前来说对于chainlit 实际部署最好的模式就是多实例(不是多worker),然后基于lb进行负载均衡,同时注意session共享的问题

参考资料

https://github.com/Chainlit/chainlit/issues/719
https://python-socketio.readthedocs.io/en/stable/server.html#user-sessions
https://socket.io/docs/v4/using-multiple-nodes/#why-is-sticky-session-required
https://socket.io/docs/v4/adapter/

标签:target,部署,module,实际,chainlit,io,server,spec
From: https://www.cnblogs.com/rongfengliang/p/18375754

相关文章

  • 开发与部署项目依赖管理之旅:Docker和venv区别
    Docker与venv的区别Docker和虚拟环境(venv)都是用于管理依赖关系和隔离环境的工具,但它们服务的目的和特点有所不同。下面是它们的详细比较。虚拟环境(venv)目的:特定于Python:venv专为Python项目设计,用于管理依赖关系并创建隔离环境。依赖管理:用于在项目中管理Python包的安装,不影......
  • jsp大学生勤工助学信息管理系统9gisv--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表企业,学生,勤工俭学,留言咨询,应聘信息开题报告内容一、课题背景及意义随着高等教育的成本上升,大学生勤工助学成为缓解经济压力、提升实践能力的重要途径。然......
  • jsp大学生就业信息检索系统dvt4m程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用人单位,学生,招聘信息,应聘信息,就业信息开题报告内容一、选题背景与意义随着高等教育的快速发展,大学生就业问题日益成为社会关注的焦点。然而,现有的就业信......
  • jsp大学生兼职网站5kl80--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表学生,企业,兼职信息,应聘信息,岗位类型开题报告内容一、项目背景随着高等教育的普及和就业市场的竞争加剧,越来越多的大学生选择参与兼职工作,以积累实践经验、......
  • jsp大学生求职招聘系统86336--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表企业,招聘信息,用户,应聘信息,录取结果开题报告内容一、研究背景与意义随着互联网技术的不断发展,大学生就业招聘系统成为企业与求职者之间的重要桥梁。该系统......
  • Maven的安装部署(不踩雷版)
    在idea中配置maven需注意maven版本和idea版本相匹配。本人使用idea版本为2020.3,jdk1.8,maven3.6.3可以与之相匹配。一、下载mavenmaven下载官网地址:https://maven.apache.org/download.cgi本人使用的maven3.6.3网盘链接:https://pan.baidu.com/s/1TdY9dc-cjI1za_5LRA6Y3A?pwd=1d5......
  • jsp大学生就业招聘系统6u6j7--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,企业,企业信息,招聘信息,应聘信息,录取信息,就业信息开题报告内容一、研究背景与意义随着高等教育的普及,大学生数量逐年增加,就业市场竞争日益激烈。传统......
  • jsp大学生兼职系统wwl6i(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表学生,企业,工作类型,兼职招聘,投简信息,企业认证开题报告内容一、项目背景当前,随着教育成本的增加和就业压力的增大,越来越多的大学生选择在校期间参与兼职工作......
  • jsp大学生家教服务管理系统875n5(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表家教老师,求聘家长,优秀老师,家教预约,家教评价,复习链接开题报告内容一、研究背景随着教育需求的日益增长,大学生家教作为一种新兴的教育服务模式,正逐渐成为广......
  • 基于数据可视化+微信小程序+SpringBoot的餐桌点餐小程序平台设计和实现(源码+论文+部
    博主介绍:CSDN毕设辅导第一人、全网粉丝50W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HLMT、J......