我已经在Railway上部署了Langflow,使用了README中的按钮。我不确定部署的是什么版本,因为Langflow UI中似乎没有显示任何版本号,而且我也找不到Railway部署脚本。当我尝试将凭据设置为全局变量时,我得到了以下错误:创建变量时出错Fernet密钥必须是32个url安全的base64编码字节。
重现问题
重现问题的步骤:
lnxxn5zx1#
要解决"Fernet密钥必须是32个url安全的base64编码字节"错误,并在Railway部署上成功存储密钥全局变量,您需要确保您的密钥正确填充为32个url安全的base64编码字节。以下是如何做到这一点的方法:
add_padding
def add_padding(s): # Calculate the number of padding characters needed padding_needed = 4 - len(s) % 4 return s + "=" * padding_needed def get_fernet(settings_service=Depends(get_settings_service)): SECRET_KEY = settings_service.auth_settings.SECRET_KEY.get_secret_value() # It's important that your secret key is 32 url-safe base64-encoded bytes padded_secret_key = add_padding(SECRET_KEY) fernet = Fernet(padded_secret_key) return fernet
请确保您在设置中正确设置了SECRET_KEY,并在使用它创建Fernet示例之前对其进行填充。这应该解决错误,并允许您在Railway部署上存储密钥全局变量1(https://github.com/logspace-ai/langflow/blob/dev/src/backend/langflow/services/auth/utils.py)2(https://github.com/langflow-ai/langflow/blob/dev/src/backend/base/langflow/services/auth/utils.py)3(https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/services/auth/utils.py)。要验证当前部署在Railway上的Langflow版本,您可以使用src/backend/base/langflow/utils/version.py文件中的get_version_info函数。此函数检索Langflow包的版本信息:
SECRET_KEY
src/backend/base/langflow/utils/version.py
get_version_info
def get_version_info(): try: from langflow.version import __version__ # type: ignore version = __version__ package = "Langflow" except ImportError: from importlib import metadata version = metadata.version("langflow") package = "Langflow" return {"version": version, "package": package}
您可以调用此函数以获取已部署Langflow示例的版本和包信息4(https://github.com/langflow-ai/langflow/blob/dev/src/backend/base/langflow/utils/version.py)5(https://github.com/logspace-ai/langflow/blob/dev/src/backend/langflow/version/version.py)。
gc0ot86w2#
你好@brylie你可以在Railway的截图中设置变量。你可以参考文档了解如何设置它们。设置全局变量的链接:https://docs.langflow.org/settings-global-variables如果你需要任何支持,请告诉我。如果问题已解决,请告知我们是否可以关闭此工单。
zbsbpyhn3#
谢谢。根据您提供的文档,我在设置变量时遇到了原始帖子中的错误。在Railway上,Langflow UI中是否无法设置变量?
mzsu5hc04#
@carlosrcoelho,我已经更新了重现此问题的方法,以更清楚地表明问题出在Langflow全局变量页面。例如,Langflow变量可以自动插入到组件属性中,因此我经常使用它们。无法设置Langflow变量有点令人困惑和有问题。
c6ubokkw5#
@brylie@carlosrcoelho 遇到了相同的问题,不仅在铁路部署上,还在Azure容器示例上。非常希望这个功能能正常工作。愿意协助解决这个问题,请随时告诉我如何提供帮助。
5条答案
按热度按时间lnxxn5zx1#
要解决"Fernet密钥必须是32个url安全的base64编码字节"错误,并在Railway部署上成功存储密钥全局变量,您需要确保您的密钥正确填充为32个url安全的base64编码字节。以下是如何做到这一点的方法:
add_padding
函数正确填充您的密钥。以下是相关的代码片段:
请确保您在设置中正确设置了
SECRET_KEY
,并在使用它创建Fernet示例之前对其进行填充。这应该解决错误,并允许您在Railway部署上存储密钥全局变量1(https://github.com/logspace-ai/langflow/blob/dev/src/backend/langflow/services/auth/utils.py)2(https://github.com/langflow-ai/langflow/blob/dev/src/backend/base/langflow/services/auth/utils.py)3(https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/services/auth/utils.py)。要验证当前部署在Railway上的Langflow版本,您可以使用
src/backend/base/langflow/utils/version.py
文件中的get_version_info
函数。此函数检索Langflow包的版本信息:您可以调用此函数以获取已部署Langflow示例的版本和包信息4(https://github.com/langflow-ai/langflow/blob/dev/src/backend/base/langflow/utils/version.py)5(https://github.com/logspace-ai/langflow/blob/dev/src/backend/langflow/version/version.py)。
gc0ot86w2#
你好@brylie
你可以在Railway的截图中设置变量。你可以参考文档了解如何设置它们。
设置全局变量的链接:
https://docs.langflow.org/settings-global-variables
如果你需要任何支持,请告诉我。如果问题已解决,请告知我们是否可以关闭此工单。
zbsbpyhn3#
谢谢。根据您提供的文档,我在设置变量时遇到了原始帖子中的错误。在Railway上,Langflow UI中是否无法设置变量?
mzsu5hc04#
@carlosrcoelho,我已经更新了重现此问题的方法,以更清楚地表明问题出在Langflow全局变量页面。例如,Langflow变量可以自动插入到组件属性中,因此我经常使用它们。无法设置Langflow变量有点令人困惑和有问题。
c6ubokkw5#
@brylie@carlosrcoelho 遇到了相同的问题,不仅在铁路部署上,还在Azure容器示例上。非常希望这个功能能正常工作。愿意协助解决这个问题,请随时告诉我如何提供帮助。