0

我希望我的 Django 应用程序中的一个方法每 60 秒定期调用一次。这是一个非常简单的任务,我想我会使用Timer. 这是我的代码,它位于__init__.py我的一个应用程序中:

from threading import Timer

def hello():
    print "xxx"
    Timer(60, hello).start()

Timer(60, hello).start()

当 Django 导入我的应用程序时,将调用此代码。

当我执行runserver命令时,这似乎工作正常,这两个实例开始运行它似乎是因为我每 60 秒看到两行控制台输出。我认为这是因为运行服务器命令运行多个进程/线程,我正确吗?

如何确保一次只运行计时器实例?

4

1 回答 1

2

定期运行代码的正确方法是设置一个运行 django 命令的 cron 作业。如果在 apache 下运行,您应该为 www-data 用户设置 cron 作业(或者runserver如果您处于开发模式,则可能是您自己的用户)这将确保代码以与 Web 代码相同的权限和所有权执行.

您还可以使用django-cron使事情变得更容易(尤其是在 Windows 下运行时)

于 2013-02-06T07:57:12.393 回答