当前位置: 首页 > 面试题库 >

Cron和virtualenv

东方河
2023-03-14
问题内容

我正在尝试从cron运行Django管理命令。我正在使用virtualenv使我的项目沙盒化。

我在这里和其他地方都看到了一些示例,这些示例显示了在virtualenv内部运行管理命令的过程,例如:

0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg

但是,即使syslog在任务应该启动时显示一个条目,该任务也不会实际运行(脚本的日志文件为空)。如果我从外壳程序手动运行该行,它将按预期工作。

当前,我可以通过cron运行命令的唯一方法是将命令分解并将其放入哑巴什包装器脚本中:

#!/bin/sh
source /home/user/project/env/bin/activate
cd /home/user/project/
./manage.py command arg

编辑:

ars提出了一种有效的命令组合:

0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg

至少就我而言,为virtualenv调用激活脚本没有任何作用。这是可行的,因此在演出中如此。


问题答案:

你应该可以python在虚拟环境中使用来执行此操作:

/home/my/virtual/bin/python /home/my/project/manage.py command arg

编辑:如果你的django项目不在PYTHONPATH中,那么你将需要切换到正确的目录:

cd /home/my/project && /home/my/virtual/bin/python ...

你也可以尝试从cron记录故障:

cd /home/my/project && /home/my/virtual/bin/python /home/my/project/manage.py > /tmp/cronlog.txt 2>&1

另一件事是尝试在manage.py脚本的最顶部进行相同的更改:

#!/home/my/virtual/bin/python


 类似资料:
  • 如果要在指定的时间间隔(例如每天一次或每周一次)运行命令或php program ,可以在此界面中设置cron作业。 Cron jobs允许您自动运行特定的命令或程序。 如果您使用的是CRM或计费软件等软件,则通常需要这样做。 更频繁地设置cron作业可能会降低服务器的性能。 设置Cron Job 要添加新的cron作业,请按照下列步骤操作 - Step 1 - 通过单击cPanel中“高级”部分

  • 问题内容: 我正在尝试在旧版Java / Spring / Hibernate项目中执行cron作业,因此我决定使用spring调度程序。 我希望myTask.doStuff在每个月的第一个星期日的12:00运行。 在我的application-context.xml中,我已将任务计划程序配置为: 问题cron表达式本身是:0 0 12?1/1 SUN#1 * 并且是一个bean,它有一个名为方法

  • Quartz Cron生成工具(表达式生成器) 开源 该软件需要在 .Net 4.0 环镜下才能运行

  • 问题内容: 我正在尝试在旧版Java / Spring / Hibernate项目中执行cron作业,因此我决定使用spring调度程序。 我希望myTask.doStuff在每个月的第一个星期日的12:00运行。 在我的application-context.xml中,我已将任务调度程序配置为: 问题cron表达式本身是: 0 0 12? 1/1 SUN#1 * 并且是一个bean,它有一个名为

  • 我正在运行一个spring boot计划的进程,需要5-10秒才能完成。完成后,60秒后流程再次开始(注意,我使用的不是fixedRate): 现在,我想限制它每分钟运行周一至周五上午9点到下午5点。我可以用 这里的问题是,这与fixedRate类似--进程每60秒触发一次,而不考虑完成上一次运行所花费的时间。 有没有办法把这两种技术结合起来?

  • 我如何在AWS上每周日和周三凌晨2点UTC运行cron作业。 时间很好,只是天数似乎是错误的格式(通过无服务器获取)。但是我能找到的所有资源都只做状态范围的天数,如何选择单个资源?