【Celery】Celery タスクの追加とflower編
ソース一式はコチラ https://github.com/dnond/celery_scraping
タスクの実行確認
タスクを追加するコードです。
task_scrape.apply_async()でタスクを追加しています。
# -*- coding: utf-8 -*- import sys from MyApp import MyApp ## デフォルト値 target_url = 'http://www.yahoo.co.jp/' countdown = 60 ## 引数の取得 argvs = sys.argv argc = len(argvs) if (argc == 3): target_url = argvs[1] if argvs[2].isdigit(): countdown = int( argvs[2] ) ###### ## 実行 if __name__ == '__main__': cMyApp = MyApp() cAsyncResult = cMyApp.task_scrape.apply_async( (target_url,), countdown=60) print "task_id:%s" % (cAsyncResult.id)
タスクを追加します。 追加した結果は、AsyncResultとして返されます。
$ python ./add_task_2_myapp.py task_id:aac9a6f1-8d54-4ac9-972f-4cfe37864a19
60秒後、MyApp.task_scrapeが実行され、www.yahoo.co.jpからtitleタグを拾ってきて/tmp/scrape_resultに追記されるはず、です。
flower
かなり高機能なTask管理ツールです。
こいつがあるという理由でCeleryを使っても良いかもしれません。
インストール
# pip install flower
こんだけ。
起動
今回はRedisをBROKERに使っているので、起動時に指定しておきます。
# celery flower --broker=redis://localhost:6379/0 --port=5555
詳しくはコチラ
表示
ブラウザから http://インストールしたサーバーのIP:5555/ にアクセスします。
なぜかメニューバーが2つ表示されていますが‥
/etc/sysconfig/celerydで3つのworkerの起動を指定
したので、それが反映されています。
どのworkerがいくつのタスクを処理したのかもGUIで分かりやすく表示してくれます。
タスクを追加すると、flowerのタスク管理ページで確認出来ます。
各タスクを選択すると、実行日時や、引数、実行結果、どのworkerで実行されたのか、等の詳細を得ることが出来ます。
【Celery】Celery 要件と環境編
【Celery】Celery インストール、Worker立ち上げ編
【Celery】Celery アプリ・タスクの定義編
【Celery】Celery タスクの追加とflower編
【Celery】Celery Task Status編
【Celery】Celery 結果をmysqlに格納する編
【Celery】Celery 複数サーバーでworkerを立ち上げてみる編
【Celery】Celery 感想編