当在MacOS上连接到自定义组件中的vanilla postgres时,langflow在1.0.9和1.0.10版本中崩溃,出现SIGABRT或SIGSEV信号,

zpf6vheq  于 2个月前  发布在  Mac
关注(0)|答案(1)|浏览(70)

Bug描述

当尝试构建连接到运行中的PostgreSQL示例的代码时,Langflow进程会停止并重新启动。
+[__NSCFConstantString initialize] 可能在调用fork()时已经在另一个线程中进行。我们不能安全地调用它或在fork()子进程中忽略它。而是崩溃了。请在objc_initializeAfterForkError上设置断点以进行调试。
OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES已经被设置为环境变量,当我们运行调试器时,我们看到如果检测到darwin,它也会在Langflow中设置。

重现步骤

  1. 设置一个正在运行的PostgreSQL数据库服务(默认情况下在本地主机的端口5432上)
  2. 打开流程
  3. 构建自定义组件

预期行为

查询正常返回

谁可以帮忙?

@ogabrielluiz

操作系统

macOS

Langflow版本

1.0.9, 1.0.10

Python版本

3.12

截图

流程文件

QueryDB-POC-2.json

piztneat

piztneat1#

要解决在macOS上连接PostgreSQL数据库时Langflow崩溃的问题,可以尝试以下步骤:

  1. 确保正确的数据库URL格式:
    确保数据库URL的格式正确。Langflow中的SQLExecutorComponent类用"postgres://"替换了"postgresql://"。请确保您的数据库URL遵循此格式。
def clean_up_uri(self, uri: str) -> str:
    if uri.startswith("postgresql://"):
        uri = uri.replace("postgresql://", "postgres://")
    return uri.strip()
  1. 设置环境变量:
    确保OBJC_DISABLE_INITIALIZE_FORK_SAFETY环境变量设置为YES。这对于在macOS上运行Gunicorn时避免错误是必要的。
def set_var_for_macos_issue():
    if platform.system() in ["Darwin"]:
        import os
        os.environ["OBJC_DISABLE_INITIALIZE_FORK_SAFETY"] = "YES"
        os.environ["no_proxy"] = "*"  # to avoid error with gunicorn
        logger.debug("Set OBJC_DISABLE_INITIALIZE_FORK_SAFETY to YES to avoid error")
  1. 使用Uvicorn代替Gunicorn:
    作为使用Gunicorn的替代方案,您可以使用Uvicorn运行服务器,这样就不需要fork(),并避免了macOS上的相关问题。
def run_langflow(host, port, log_level, options, app):
    try:
        if platform.system() in ["Windows", "Darwin"]:
            import uvicorn
            uvicorn.run(
                app,
                host=host,
                port=port,
                log_level=log_level.lower(),
                loop="asyncio",
            )
        else:
            from langflow.server import LangflowApplication
            LangflowApplication(app, options).run()
    except KeyboardInterrupt:
        pass
    except Exception as e:
        logger.exception(e)
        sys.exit(1)
  1. 启用详细日志记录:
    将日志级别设置为debug以获取有关崩溃的更详细信息。这可以帮助进一步诊断问题。
LANGFLOW_LOG_LEVEL=debug

检查由log_file选项指定的日志文件中的详细日志。
通过遵循这些步骤,您应该能够减轻与macOS上的PostgreSQL连接相关的崩溃问题。如果问题仍然存在,请考虑更新到Langflow的最新版本,因为新版本中可能已经修复或改进了与此问题相关的功能。

  • 要继续与 Dosu 对话,请提及 @dosu。*

相关问题