如何通过cron job运行django管理命令

时间:2013-11-14 22:14:46

标签: python django

我正在使用名为django-mailbox的django应用程序。这样做的目的是通过pop3和其他协议导入电子邮件消息并将其存储在数据库中。我想通过一个chron定期做这件事。在文档http://django-mailbox.readthedocs.org/en/latest/topics/polling.html中,它指出:

使用cron作业

您可以通过运行名为getmail的管理命令轻松地使用传入邮件(可选择使用您希望收到邮件的邮箱名称的参数)。:

python manage.py getmail

现在我可以在命令行本地运行它并且它可以工作但是如果它被部署到只能通过URL访问的外部服务器,那么该命令将如何给出?

2 个答案:

答案 0 :(得分:14)

如果您使用虚拟环境,请使用virtualenv中的python二进制文件

* * * * * /path/to/virtualenv/bin/python /path/to/project/manage.py management_command

答案 1 :(得分:2)

在服务器上:

$ sudo crontab -l
no crontab for root
$ sudo crontab -e
no crontab for root - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/vim.basic
  4. /usr/bin/vim.tiny

Choose 1-4 [2]:    

选择您喜欢的编辑器

然后查看http://en.wikipedia.org/wiki/Cron,了解如何安排命令运行的时间,将其指向计算机上的某个.sh文件,确保提供完整路径,因为这将在root用户上下文中运行。

cron将运行的脚本可能类似于:

#!/bin/bash
cd /absolute/path/to/django/project
/usr/bin/python ./manage.py getmail