如何实现一个长期运行的事件驱动的Python程序?
我有一系列维护任务需要处理,这些任务是针对一个用Python写的WSGI应用的。因为这些任务有点复杂,所以用定时任务(crontab)来处理不太合适,比如说任务的运行频率要根据任务队列的大小来决定,还要管理与一组EC2实例的连接池等等。
我应该怎么实现一个长时间运行的、基于事件的Python程序呢?我以前从来没有需要过这样的功能,所以我甚至不知道该用什么关键词去搜索。
1 个回答
7
现在很多大型的现代Python网站都在使用Celery来处理这类工作。Celery是一个分布式的任务队列,支持任务的调度。
虽然对于一个小网站来说可能有点“重”,但它会随着你的网站发展而成长。我自己也打算很快实现它(不使用Rabbit)。
我最近发现了另一个适合Django用户的选择,叫做django-tasks,它专注于处理较少但时间较长的批处理任务。另外还有一个使用zeromq的django-ztask。