まらんさんのチラ裏

その日暮らしのおじさん

django + celery で periodic task 作ったらハマった件

task queue するときにとっても便利な djcelery こと、django-celery ですが、celery には periodic task という cron のように定期実行する機能が実装されています。

早速使ってみようということで django の admin 画面から periodic task に test_task() というタスクを追加してみたところ毎回 ArgumentError が出てコケるので何ごとかと思い調べてみたところ、クラス内のメソッドを指定していたのが原因でした。

class Hoge(object):
    def test_task(self):
        pass

みたいなことをやっていると、引数の self に celery 側が何も渡してくれないらしく、結果としてコケるという。

結局、test_tesk をクラス外に出して対応しましたが、上手いこと self に渡して上げる方法あるのかな。
誰か知ってたら教えてください。

追記
そういえば admin 画面から入力 priodic task のタスク名は日本語NGだった