安排常规事件:Cron/Cron替代品(包括芹菜)

2024-05-17 02:37:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我感兴趣的是定期运行一组特定的操作。显然,这是cron的任务,对吧?

不幸的是,互联网似乎有点分歧。

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

当然了!不幸的是,设置芹菜对我来说或多或少是一场噩梦-请参见Error message 'No handlers could be found for logger “multiprocessing”' using Celery。这只是我吃芹菜时遇到的问题之一。其他的还有一个套接字错误,我是唯一一个遇到这个问题的人。

别误会,芹菜看起来真的很酷。不幸的是,似乎缺少支持,而且在它首选的后端RabbitMQ中内置了一些奇怪的限制。不幸的是,不管程序有多酷,如果它不起作用,那么,它就不起作用了!

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

(我已经为芹菜苦苦挣扎了大约两周了,不幸的是,至少现在是时候放弃了。)


Tags: djangonomessage环境linuxwindows互联网error
3条回答

一个简单的、非芹菜式的方法是创建 custom django-admin commands来执行异步或计划的任务。

然后,在Windows上,使用at命令调度这些任务。在Linux上,您使用cron

如果可以的话,我强烈建议您在开发环境中放弃Windows。在Linux甚至MacOSX上你的生活会更好。例如,用Ubuntu重新使用一台备用或旧机器,或者在Windows机器上的VM中运行Ubuntu。

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

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

我也遇到了同样的问题,于是推迟了用芹菜(太复杂)或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中导入模块就可以运行完全相同的程序。希望这有帮助。

相关问题 更多 >