武之新
celeryでsingletonなタスク

djangoでバッチ処理や非同期処理を組もうとしてceleryを導入。使い方も簡単でとても便利。

が、多重起動されたら困る処理を制限しようとしても、celery自体にはそういう機能がない模様。celeryのcookbookをみると、celery.task.Taskを継承したクラスを自分で作ればいいらしい。でもいちいちclassを定義するのは面倒。

というわけでdecoratorでsingletonなタスクを実現できるようにしてみた。

続きを読む…