首页 > 编程问答 >django 和 celery 中解释 env 变量的差异

django 和 celery 中解释 env 变量的差异

时间:2024-07-24 04:16:09浏览次数:11  
标签:python django celery

我对带有反斜杠的环境变量有疑问。我有:

NETWORK=\\TI\folder 

但是在 Django 和 Celery 中,这个变量将以不同的方式解释:

Django: \\TI\folder
Celery: \TIfolder

为什么我有差异? Celery 和 Django 具有相同的 env 文件和环境。 Python 3.8


Django 和 Celery 对环境变量中反斜杠的解释差异主要源于它们加载环境变量的方式不同。

Django:

  • Django 使用 Python 的 os.environ 字典来访问环境变量。
  • os.environ 会将反斜杠 ( \ ) 解释为转义字符。
  • 为了表示一个字面上的反斜杠,你需要使用双反斜杠 ( \\ )。

因此,在你的例子中,Django 正确地将 NETWORK 解释为 \\TI\folder

Celery:

  • Celery 使用 celery worker 命令启动 worker 进程。
  • 当你直接从 shell 启动命令时,shell 会对命令行参数进行一层处理,包括环境变量。
  • 在 Windows 系统中,shell 会将单个反斜杠解释为路径分隔符,并将其替换为正斜杠 ( / )。
  • 因此,当 Celery worker 接收到 NETWORK 环境变量时,它已经被 shell 处理过,变成了 /TIfolder

解决方法:

为了解决这个问题,你可以使用以下任一方法:

  1. 使用正斜杠 (/):
  2. 将你的环境变量值改为使用正斜杠作为路径分隔符,例如 NETWORK=/TI/folder
  3. 这将确保 Django 和 Celery 都能正确解释路径。

  4. 使用原始字符串:

  5. 在定义环境变量时,使用 Python 原始字符串。例如: python NETWORK=r'\\TI\folder'
  6. 这将阻止 Python 解释反斜杠为转义字符。

  7. 使用双反斜杠:

  8. 在你的环境变量值中使用双反斜杠,例如: NETWORK=\\\\TI\\folder
  9. 虽然看起来很奇怪,但这能确保在经过 shell 处理后,Celery worker 能接收到正确的路径。

推荐方案:

为了避免混淆,建议在所有环境变量中都使用正斜杠 ( / ) 作为路径分隔符。这将确保跨平台兼容性,并避免 Windows 系统中特有的反斜杠问题。

标签:python,django,celery
From: 78785420

相关文章

  • python 以及将数组传递给函数的问题
    我需要求解一些常微分方程$\frac{dy}{dx}=f(x)=x^2ln(x)$并继续在限制0之间创建数组xpt。<=xpt<=2因为我必须小心xpt=0,所以我将函数定义如下deff(x):ifx<=1.e-6:return0.else:returnnp.square(x)*np.log(x)我的调用程序读取Np......
  • 如果 Python 脚本正在使用文件夹,如何在文件资源管理器中进行更改时防止 Windows 的“
    我有一个简单的脚本,显示在QTreeView中的QListView中选择的目录的内容,我想添加打开文件资源管理器的功能,以让用户编辑目录内的内容。但是,添加新的文件夹和文件可以,但删除或移动文件夹或文件会提示“文件夹正在使用”错误:此操作无法完成,因为该文件已在另一个程......
  • 如何使用 Python API 获取每个模型的活跃用户列表、最后登录信息
    我想通过PythonAPI获取我的dbt项目的所有模型中的活动或非活动用户列表。这可能吗?我尝试列出模型,但无法获取用户信息,如用户名、项目、以及上次活动或上次登录。不幸的是,dbt本身并不跟踪你所寻找的用户活动数据(最后登录、活跃用户等)。dbt的主要功能是转换数据,而不......
  • Python tkinter 窗口不断关闭,我不知道为什么
    我正在尝试制作一个有趣的小程序,其中每小时左右就会有一只毛茸茸的动物走过屏幕。我有一个主窗口,它启动一个循环,每小时左右播放一次动画/声音,但是在口袋妖怪第一次完成行走后,整个程序就会结束。我认为这可能与我设置tkinter窗口的方式有关,但我无法弄清楚。我认为在这里包含......
  • 用于自动访问 MongoDB Atlas CLI 的 Python 脚本
    我想编写一个Python脚本,以便普通用户可以访问他的数据库并从他的终端执行CRUD操作。我正在查看官方文档,但我有点迷失。有人可以给我指点基本教程来开始吗?当然,以下是如何构建Python脚本来访问MongoDBAtlasCLI的基本教程:先决条件:MongoDBAtlas......
  • Python实现简单学生登陆系统
     代码:importhashlibclassStudent:def__init__(self,username,password):#初始化学生对象,存储用户名和加密后的密码self.username=usernameself.password=hashlib.sha256(password.encode()).hexdigest()defcheck_passwo......
  • python猜数字游戏
    好的,下面是一个简单的小游戏代码示例,使用Python编写。这个游戏是一个猜数字游戏,玩家需要猜一个1到100之间的随机数。importrandomdefguess_number_game():print("欢迎来到猜数字游戏!")print("我已经想好了一个1到100之间的数字,请你猜一猜。")secret_num......
  • Django教程(004):基于orm操作数据库的用户管理实现
    文章目录1、功能需求2、展示用户列表2.1添加url2.2创建视图2.3编写html页面3、添加用户3.1添加url3.2跳转到添加页面3.3编写添加用户页面3.4添加用户3.5实现效果3.6页面优化4、删除用户4.1添加删除用户按钮4.2添加删除url4.3删除用户4.4实现效果5、完整......
  • 【Python正则表达式】:文本解析与模式匹配
    文章目录1.正则表达式2.re模块3.修饰符3.元字符3-1字符匹配元字符3-2重复次数限定元字符3-3字符集合匹配元字符3-4分组元字符3-5边界匹配元字符3-6字符类别匹配元字符4.技巧4-1贪婪与非贪婪5.案例1.正则表达式正则表达式面向什么样的问题?1、判断一个字......
  • 仅需增加2行代码,Python量化策略速度提升20+倍!
    今天分享一个Python量化策略加速的小技巧,不用修改原有代码,只需在原有代码里新增2行,策略执行速度便可能提高20+倍,正文开始~现如今,无论是入门量化投资,还是做数据分析、机器学习和深度学习,Python成为了首选编程语言,直观的原因就是容易上手和资源丰富,但Python有个根深蒂固的标签,......