2011-06-08 59 views
9

我曾经感兴趣的东西是定期运行一系列定期的活动。很明显,这是cron的任务,对吧?计划一个常规事件:Cron/Cron的替代品(包括芹菜)

不幸的是,互联网似乎有点不同意。

让我详细介绍一下我的设置。首先,我的开发环境在Windows中,而我的生产环境托管在Webfaction(Linux)上。 Windows上没有真正的cron,对吧?另外,我使用Django!什么建议Django?

Celery当然!不幸的是,设立芹菜对我来说或多或少是一场真正的噩梦 - 请参阅Error message 'No handlers could be found for logger “multiprocessing”' using Celery。这只是我和芹菜有过的一个问题。其他包括一个套接字错误,我是唯一一个得到这个问题的人。

不要误解我的意思,芹菜似乎真的很酷。不幸的是,似乎缺乏支持,并且在其首选后端RabbitMQ中内置了一些奇怪的限制。不幸的是,无论程序有多酷,如果它不起作用,那它就行不通了!

这就是我希望你们都可以进来的地方。我想知道关于cron或cron的等价物,它可以在Windows和Linux环境中以类似的方式设置(最好是相同的)。

(我一直在挣扎芹菜大约两个星期,不幸的是,我认为现在是时候在毛巾折腾而放弃它,至少现在是这样。)

+1

你为什么要在Windows上开发,但在Linux上部署?看起来你正在为自己设置这样的许多头痛。 – 2011-06-08 13:43:49

+0

不完全是我的选择。我考虑过更换我的一台计算机或对其进行分区,但最终会出现它自己的相同问题。只是想尽可能地利用现在的情况。 – RHH 2011-06-08 15:47:29

+1

五笔安装程序使您可以轻松地双启动到Ubuntu现在。 – goh 2011-08-24 04:56:16

回答

11

一个简单的,非芹菜处理事情的方法是创建Django custom management commands来执行您的异步或计划任务。

然后,在Windows上,使用at命令来安排这些任务。在Linux上,您使用cron

我也强烈建议开沟Windows,如果你可以开发环境。在Linux或Mac OSX上,你的生活将会变得更加美好。以Ubuntu为例重新使用备用或旧机器,或者在Windows机器上的VM中运行Ubuntu。

14

我有同样的问题,并试图用芹菜(太复杂)或cron(外部应用程序)来解决它,最终发现Advanced Python Scheduler。只是刚开始使用它,但它看起来相当成熟和稳定,具有体面的文档,并将采取一些调度格式(如cron风格)。

documentation开始,以特定间隔运行一个函数。

from apscheduler.scheduler import Scheduler 
sched = Scheduler() 
sched.start() 
def hello_world(): 
    print "hello world" 
sched.add_interval_job(hello_world,seconds=10) 

这是不可阻挡的,我跑的东西简单地从我urls.py导入模块相当一致。希望这可以帮助。

0

Django Chronograph是一个很好的选择。你只需要设置一个cron,然后在django admin中执行所有操作。您可以安排django管理的任务/命令。