Django Celery 调度 manage.py 命令

标签 django celery django-celery celerybeat

我需要使用以下命令按计划更新 solr 索引:

(env)$ ./manage.py update_index

我已经浏览了 Celery 文档并找到了有关调度的信息,但无法找到一种方法来按计划和在 virtualenv 中运行 django 管理命令。这会更好地运行在普通的 cron 上吗?如果是这样,我将如何在 virtualenv 中运行它?任何人都有这方面的经验?

谢谢您的帮助!

最佳答案

要从 cron 作业定期运行您的命令,只需将该命令包装在加载 virtualenv 的 bash 脚本中。例如,这是我们运行 manage.py 命令的操作:

django_cmd.sh:

#!/bin/bash

cd /var/www/website/
source venv/bin/activate
/var/www/website/manage.py $1 --settings=$2

定时盘:
MAILTO=webmaster@website.com
SETTINGSMODULE=website.settings_prod
5 * * * * /var/www/website/django_cmd.sh update_index $SETTINGSMODULE >> /dev/null
0 10 * * * /var/www/website/django_cmd.sh update_accounts $SETTINGSMODULE 

关于Django Celery 调度 manage.py 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17664166/

相关文章:

python - 将 django-celery 与 redis 一起使用时出现 NotRegistered 异常

python - 第一次调用 Django 模型的保存方法时,如何运行一些代码?

python - 如何在 Django 中测试 celery period_task?

django - Celery 没有连接到 Redis Broker (Django)

postgresql - 为什么我们需要像 RabbitMQ 这样的消息代理而不是像 PostgreSQL 这样的数据库?

python - 在不丢失保留任务的情况下重新加载 celery 代码

python - Django:应用级变量

django-admin.py startproject mysite 命令不起作用

python - Django session 将参数从一个 View 传递到另一个 View ,但为所有用户实例设置相同的值

Django-Celery - 从管理页面重新提交任务?