调度一个常规事件:Cron / Cron替代品(包括芹菜)

我感兴趣的东西是定期运行一定的行动。 显然,这是cron的任务,对吗?

不幸的是,互联网似乎在这里有点不一致。

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

芹菜当然! 不幸的是,设置芹菜对我来说或多或less是一场真正的噩梦 – 请参阅使用芹菜的错误消息'没有处理程序可以发现logging器'多处理'“ 。 而这只是我和芹菜有过的一个问题。 其他的包括一个套接字错误,我是唯一一个得到这个问题的人。

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

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

(我现在已经和芹菜苦苦挣扎了两个星期了,不幸的是我觉得现在是时候把毛巾折腾起来放弃了,至less现在是这样。)

一种简单的非Celery方法可以创建Django自定义管理命令来执行异步或计划任务。

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

如果可以的话,我也强烈推荐在开发环境中使用Windows。 在Linux甚至Mac OSX上,你的生活将会变得更加美好。 例如,用Ubuntu重新使用一台备用或旧机器,或者在Windows机器上的虚拟机上运行Ubuntu。

我有同样的问题,并试图解决它与芹菜(太复杂)或cron(外部应用程序),并最终找到高级Python调度程序 。 只是开始使用它,但它似乎相当成熟和稳定,有不错的文档,并会采取一些调度格式(如cron风格)。

从文档中 ,按特定间隔运行一个函数。

 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导入模块来运行相同的东西。 希望这可以帮助。

https://github.com/andybak/django-cron

由一个cron任务触发,但是所有的调度和配置都是在Python中完成的。

Django计时码表是一个很好的选择。 你只需要设置一个cron,然后在django admin中做所有的事情。 您可以安排django管理的任务/命令。