Django 管理命令在 cron 中不起作用

2024-01-09

我在安排时间时遇到问题manage.py celery call myapp.tasks.mytask对于我的用户 crontab,当 cron 尝试运行该作业时,它会在 stderr 中获取此信息(它会邮寄给我,如/var/mail/kal)

Unknown command: 'celery'
Type 'manage.py help' for usage.

相同的命令完全可以在常规 bash 登录 shell 中工作,但在 crontab 中不起作用。

我在 Debian 上这样做:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 7.0 (wheezy)
Release:        7.0
Codename:       wheezy

我在 StackOverflow 上阅读了许多类似的问题,并尝试了许多建议的解决方案。到目前为止,他们都没有为我工作过。以下是我迄今为止尝试过的解决方案:

首先,我确保在 crontab 中指定相关的环境变量:

SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

注意:这些在以下所有解决方案中都保留。

1.使用python可执行文件和manage.py脚本的完整路径

* * * * * /home/kal/.virtualenvs/foo_dev/bin/python /home/kal/foo/manage.py celery call myapp.tasks.mytask

2.首先进入项目路径

* * * * * cd /home/kal/foo && /home/kal/.virtualenvs/foo_dev/bin/python ./manage.py celery call myapp.tasks.mytask

3. 将所有内容包装在 bash 脚本中

~/mytask.sh 的内容:

#!/usr/bin/env bash
source /home/kal/.virtualenvs/foo_dev/bin/activate;
cd /home/kal/foo;
./manage.py celery call myapp.tasks.mytask;

crontab 行:

* * * * * ~/mytask.sh

我什至修改了myproj/settings.py输出sys.path and sys.executable到 stderr 并比较 cron 和登录 shell 之间的输出,它们完全相同:

cron 作业的输出:

sys.executable:
    /home/kal/.virtualenvs/foo_dev/bin/python

Content of sys.path:
    /home/kal/foo
    /home/kal/.virtualenvs/foo_dev/src/bootstrap
    /home/kal/.virtualenvs/foo_dev/src/django-json-rpc
    /home/kal/.virtualenvs/foo_dev/lib/python2.7
    /home/kal/.virtualenvs/foo_dev/lib/python2.7/plat-linux2
    /home/kal/.virtualenvs/foo_dev/lib/python2.7/lib-tk
    /home/kal/.virtualenvs/foo_dev/lib/python2.7/lib-old
    /home/kal/.virtualenvs/foo_dev/lib/python2.7/lib-dynload
    /usr/lib/python2.7
    /usr/lib/python2.7/plat-linux2
    /usr/lib/python2.7/lib-tk
    /home/kal/.virtualenvs/foo_dev/local/lib/python2.7/site-packages
    /home/kal/foo

Bash 登录 shell 的输出:

sys.executable:
    /home/kal/.virtualenvs/foo_dev/bin/python

Content of sys.path:
    /home/kal/foo
    /home/kal/.virtualenvs/foo_dev/src/bootstrap
    /home/kal/.virtualenvs/foo_dev/src/django-json-rpc
    /home/kal/.virtualenvs/foo_dev/lib/python2.7
    /home/kal/.virtualenvs/foo_dev/lib/python2.7/plat-linux2
    /home/kal/.virtualenvs/foo_dev/lib/python2.7/lib-tk
    /home/kal/.virtualenvs/foo_dev/lib/python2.7/lib-old
    /home/kal/.virtualenvs/foo_dev/lib/python2.7/lib-dynload
    /usr/lib/python2.7
    /usr/lib/python2.7/plat-linux2
    /usr/lib/python2.7/lib-tk
    /home/kal/.virtualenvs/foo_dev/local/lib/python2.7/site-packages
    /home/kal/foo

我完全困惑了。


我找到了问题的原因。

It is very very subtle.

问题有两个方面:

  1. 没有USERcron 作业中的环境变量;仅有的LOGNAME;
  2. When manage.py is run 指定管理命令, 姜戈quietly如果在导入设置模块期间引发异常,则会故障转移到空白设置。

我的设置模块试图引用os.environ['USER'],它在 cron 的环境中不存在。因此导入设置模块会导致引发异常,Django会悄悄地故障转移到空白设置,这意味着空白INSTALLED_APPS and no celery命令!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 管理命令在 cron 中不起作用 的相关文章

  • Python 中的六边形自组织映射

    我在寻找六边形 自组织映射 http en wikipedia org wiki Self organizing map在Python上 准备好模块 如果存在的话 绘制六边形单元格的方法 将六边形单元作为数组或其他方式使用的算法 About
  • 使用 Django 的 post_save() 信号

    我有两张桌子 class Advertisement models Model created at models DateTimeField auto now add True author email models EmailField
  • 用 Python 编写一个无操作或虚拟类

    假设我有这样的代码 foo fooFactory create 由于种种原因 fooFactory create 可能无法创建实例Foo 如果可以的话我想要fooFactory create 返回一个虚拟 无操作对象 这个对象应该是完全惰性
  • 获取单个方程的脚本

    在文本文件中输入 a 2 8 b 3 9 c 4 8 d 5 9 e a b f c d g 0 6 h 1 7 i e g j f h output i j 期望的输出 输出 2 8 3 9 0 6 4 8 5 9 1 7 如果输入文件名
  • 类属性在功能上依赖于其他类属性

    我正在尝试使用静态类属性来定义另一个静态类属性 我认为可以通过以下代码来实现 f lambda s s 1 class A foo foo bar f A foo 然而 这导致NameError name A is not defined
  • Python3 查找 2 个列表中有多少个差异才能相等

    假设我们有 2 个列表 always具有相同的长度和always包含字符串 list1 sot sot ts gg gg gg list2 gg gg gg gg gg sot 我们需要找到 其中有多少项list2应该改变 以便它等于lis
  • 唯一的图像哈希值即使 EXIF 信息更新也不会改变

    我正在寻找一种方法来为 python 和 php 中的图像创建唯一的哈希值 我考虑过对原始文件使用 md5 和 因为它们可以快速生成 但是当我更新 EXIF 信息 有时时区关闭 时 它会更改总和 并且哈希也会更改 有没有其他方法可以为这些文
  • 使用Python将图像转换为十六进制格式

    我的下面有一个jpg文件tmp folder upload path tmp resized test jpg 我一直在使用下面的代码 Method 1 with open upload path rb as image file enco
  • Python unicode 字符代码?

    有没有办法将 Unicode 字符 插入 Python 3 中的字符串 例如 gt gt gt import unicode gt gt gt string This is a full block s unicode charcode U
  • 字典中列表中仅有的几个索引的总和

    如果我有这种类型的字典 a dictionary dog white 3 5 black 6 7 Brown 23 1 cat gray 5 6 brown 4 9 bird blue 3 5 green 1 2 yellow 4 9 mo
  • 负整数的Python表示

    gt gt gt x 4 gt gt gt print b format x x 4 100 gt gt gt mask 0xFFFFFFFF gt gt gt print b format x mask x mask 4294967292
  • 使用 lambda 函数更改属性值

    我可以使用 lambda 函数循环遍历类对象列表并更改属性值 对于所有对象或满足特定条件的对象 吗 class Student object def init self name age self name name self age ag
  • 使用 Doc2vec 后如何解释 Clusters 结果?

    我正在使用 doc2vec 将关注者的前 100 条推文转换为矢量表示形式 例如 v1 v100 之后 我使用向量表示来进行 K 均值聚类 model Doc2Vec documents t size 100 alpha 035 windo
  • Django-celery/RabbitMQ 在哪里存储任务结果?

    我的 celery 数据库后端设置是 CELERY RESULT BACKEND database CELERY RESULT DBURI mysqlite db 我使用 RabbitMQ 作为我的消息发送器 似乎没有任何结果存储在数据库中
  • 是否可以强制浮点数的指数或有效数匹配另一个浮点数(Python)?

    这是我前几天试图解决的一个有趣的问题 是否可以强制一个的有效数或指数float与另一个人一样float在Python中 出现这个问题是因为我试图重新调整一些数据 以便最小值和最大值与另一个数据集匹配 然而 我重新调整后的数据略有偏差 大约小
  • asyncio - 多次等待协程(周期性任务)

    我正在尝试为异步事件循环创建定期任务 如下所示 但是我收到 RuntimeError 无法重用已等待的协程 异常 显然 asyncio 不允许等待相同的可等待函数 如中讨论的这个错误线程 https bugs python org issu
  • PyQt 中的线程和信号问题

    我在 PyQt 中的线程之间进行通信时遇到一些问题 我使用信号在两个线程 发送者和监听者 之间进行通信 发送者发送消息 期望被监听者接收 但是 没有收到任何消息 谁能建议可能出了什么问题 我确信这一定很简单 但我已经环顾了几个小时但没有发现
  • 如何使用 Django (Python) 登录表单?

    我在 Django 中构建了一个登录表单 现在我遇到了路由问题 当我选择登录按钮时 表单不会发送正确的遮阳篷 我认为前端的表单无法从 查看 py 文件 所以它不会发送任何 awnser 并且登录过程无法工作 该表单是一个简单的静态 html
  • 如何识别图形线条

    我有以下格式的路径的 x y 数据 示例仅用于说明 seq p1 p2 0 20 2 3 1 20 2 4 2 20 4 4 3 22 5 5 4 22 5 6 5 23 6 2 6 23 6 3 7 23 6 4 每条路径都有多个点 它们
  • 使用 numpy 加速 for 循环

    下一个 for 循环如何使用 numpy 获得加速 我想这里可以使用一些奇特的索引技巧 但我不知道是哪一个 这里可以使用 einsum 吗 a 0 for i in range len b a numpy mean C d e f b i

随机推荐

  • 停止线程:标志与事件[重复]

    这个问题在这里已经有答案了 我看到了例子例如这里 https stackoverflow com a 325528 4653485使用一个Event https docs python org 3 library threading htm
  • QML:无法将[未定义]分配给

    我正在尝试将 Qt Android 程序的界面从 QWidgets 重写为 QML 我之前从未使用过它 因此错误可能非常明显且愚蠢 新界面基于ListView 看起来像 ListView id listView x 16 y 146 wid
  • 如何在 XCode 4.3 中为仅限 iPhone 的应用程序指定 iPad Retina 图标?

    我的 iPhone 应用程序图标在 iPhone Retina 和 iPad 中显示良好 但在 iPad 视网膜 模拟器和设备 上 我得到一个图标 显然包含应用程序的开始屏幕 鉴于我的应用程序仅针对 iPhone 设计 而非 通用 因此 X
  • 当我的网站打开多个选项卡时,为什么 setTimeout 会加速?

    我有一个每秒倒计时的计时器 它工作得很好 直到用户打开我的网站的 3 或 4 个选项卡 此时最新选项卡的计时器速度变为两倍或三倍 我目前只能在 IE8 中重现该错误 我之前使用的是 setInterval 并且也可以在 Firefox 中重
  • 使用itextsharp将字体嵌入到pdf中

    我尝试使用 itextsharp 5 2 1 0 嵌入字体 但出现错误 字体是 KozGoPro Light otf 经过一番研究后发现它是日语字体 我已经尝试过以下 Dim tblx1 As PdfPTable New PdfPTable
  • HTTP 标头中的“Content-Length”字段是什么?

    这是什么意思 使用标头中指定的编码的编码内容字符串的字节数 内容字符串的字符数 特别是在以下情况Content Type application x www form urlencoded 它是请求或响应正文中数据的字节数 正文是标题下方空
  • 如何将文件句柄传递给函数?

    当我运行下面的代码时我得到 Can t use string F as a symbol ref while strict refs in use at T pl line 21 其中第 21 行是 flock fh LOCK EX 我究竟
  • glDrawElements 使用了错误的 VBO?

    我正在尝试在屏幕上渲染两个不同的对象 据我所知 问题是OpenGL使用了错误的顶点缓冲区 但使用了正确的索引缓冲区 但我不太确定我目前正在做的任何事情 因为我几乎已经开始再次学习OpenGL 这是当前显示的内容 http puu sh ek
  • Python itertools 产品,但有条件吗?

    我有一个函数 fun 需要几个参数 p0 p1 对于每个参数 我给出一个可能值的列表 p0 list a b c p1 list 5 100 我现在可以为 p0 p1 的每个组合调用我的函数 for i in itertools produ
  • en_US 或 en-US,您应该使用哪一个? [复制]

    这个问题在这里已经有答案了 假设您想在数据库中存储用户首选项的区域设置 您将使用哪个值 en US 或 en US 它们是两个标准 但是您更喜欢使用哪一个作为您自己的应用程序的一部分 Updated 似乎许多网站都使用破折号而不是下划线 例
  • 以纱线集群模式在 YARN 上运行 Spark:控制台输出去了哪里?

    我按照此页面在 YARN 上以纱线集群模式运行 SparkPi 示例应用程序 http spark apache org docs latest running on yarn html http spark apache org docs
  • http-equiv="refresh" 是否保留引用信息和元数据?

    如果我设置一个这样的页面 执行重定向时浏览器是否会发送引用者信息和其他元数据 此处测试时 Firefox 和 IEdo not但铬does发送引荐来源网址 尽管这也不一致 无论它是否发送到同一域 因为我找不到任何说明什么的规范should是
  • MVC 的缓存层 - 模型还是控制器?

    我正在重新考虑在哪里实现缓存部分 您认为最合适的实施地点在哪里 在每个模型中 还是在控制器中 方法 1 伪代码 mycontroller php MyController extends Controller class function
  • 从 ActivityGroup 开始ActivityForResult?

    尝试从活动组启动活动时 我似乎无法得到任何结果 我已将 onactivityresult 放入活动和活动组中 具体来说 我试图让用户从 Intent ACTION GET CONTENT 中选择照片 视频 但我从来没有得到任何回报 我究竟做
  • 对于给定的有限代表字符串列表,正则表达式的语法推理?

    我正在分析一个大型公共数据集 其中包含许多详细的人类可读字符串 这些字符串显然是由某些常规 在形式语言理论意义上 语法生成的 逐一查看这些字符串组以了解其中的模式并不太难 不幸的是 大约有 24 000 个独特的字符串被分为 33 个类别和
  • 在 Jersey JAX-RS 服务器中返回大对象时如何设置 Content-Length

    我有时想返回一个大的 几个 MB 二进制对象作为 JAX RS 资源方法的响应 我知道对象的大小 并且希望在响应上设置 Content Length 标头 并且不希望使用分块传输编码 在 Jersey 1 x 中 我使用自定义 Messag
  • Serde 反序列化为多个结构之一?

    有没有一种好的方法可以暂时将 JSON 反序列化为不同的结构 在文档中找不到任何内容 不幸的是 结构有 标签 来区分 如下所示如何有条件地将 JSON 反序列化为枚举的两个不同变体 https stackoverflow com quest
  • pandas 中 header 和 Skiprow 的区别不清楚

    任何人都可以用一个很好的例子来详细说明 header 和skiprows 在语法中的区别 pd read excel 名称 标题 数字 skiprows 数字 您可以关注本文 https towardsdatascience com imp
  • 更新状态 - 为什么在调用 setState 时创建新的状态副本?

    反应文档 永不变异this state直接调用setState 然后 可能会取代你所做的突变 对待this state就好像它是 不可变的 很清楚 class App extends React Component state data 以
  • Django 管理命令在 cron 中不起作用

    我在安排时间时遇到问题manage py celery call myapp tasks mytask对于我的用户 crontab 当 cron 尝试运行该作业时 它会在 stderr 中获取此信息 它会邮寄给我 如 var mail ka