我有一个独立的脚本,它擦除页面,启动与数据库的连接,并将数据库写入其中.我需要它在x小时后定期执行.我可以使用伪代码使用bash脚本:
while true do python scraper.py sleep 60*60*x done
从我读到的关于消息代理的内容来看,它们用于从一个正在运行的程序向另一个程序发送"信号",原则上就像HTTP一样.就像我有一段代码接受来自用户的电子邮件ID一样,它会将带有email-id的信号发送到另一段将发送电子邮件的代码.
我需要芹菜在heroku上运行一个周期性的任务.我已经在一个单独的服务器上有一个mongodb.为什么我需要为rabbitmq或redis运行另一台服务器呢?没有经纪人,我可以使用芹菜吗?
Celery体系结构旨在跨多个服务器扩展和分配任务.对于像你这样的网站,这可能是一种过度杀伤力.通常需要队列服务来维护任务列表并发出已完成任务的状态信号.
你可能想看看Huey.Huey是小规模的Celery"Clone",只需要Redis作为外部依赖,而不是RabbitMQ.它仍然使用Redis队列机制来排队队列中的任务.
还存在Advanced Python调度程序,它甚至不需要Redis,但可以在进程内保存队列中的状态.
或者,如果您有非常少量的定期任务,没有延迟任务,我只会使用Cron和纯Python脚本来运行任务.