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だった