8

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

使用 cron 作业

您可以通过运行名为 getmail 的管理命令轻松使用传入的邮件(可选地使用您要为其获取邮件的邮箱名称的参数)。:

python manage.py getmail

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

4

2 回答 2

22

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

* * * * * /path/to/virtualenv/bin/python /path/to/project/manage.py management_command
于 2015-02-12T00:18:51.917 回答
3

在服务器机器上:

$ 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
于 2013-11-14T22:29:20.840 回答