読者です 読者をやめる 読者になる 読者になる

TheSchwartz::Serviceがよさげ

Perl Python

PythonからTheSchwartzを使うならばTheSchwartz::Serviceがよさげ。こいつはHTTP経由でTheSchwartzのジョブを扱えるので、Gearmanを介する必要がないところがよい。

sixapartのレポジトリからチェックアウトして、

$ svn co http://code.sixapart.com/svn/Net-Service/trunk Net-Service
$ svn co http://code.sixapart.com/svn/TheSchwartz-Service/trunk TheSchwartz-Service

TheSchwartz-Service/bin/schwartz-serviceでプロセスを起動。オプションをつければデーモンとして起動させることもできる。

$ perl schwartz-service --help
$ perl schwartz-service --user=schwartz --debug

PythonからMyWorkerというジョブを登録するには、次のようなかんじ。デフォルトのポートは10000。

import simplejson
from httplib2 import Http

arg = {'what': 'ever'}

conn = Http()
response, content = conn.request("http://localhost:10000/insert/MyWorker/",
                                 "POST",
                                 body=simplejson.dumps(arg))

/insert/(ジョブ名)/の後にパラメータをつけて、

http://localhost:10000/insert/MyWorker/?run_after=1212115353

のようにすれば、TheSchwartz::Jobのパラメータを設定できるようなことが書いてあるような気がするんだけど、実装はそうはなっていない?

もう少し検証して問題なさそうならば、本格的にこいつを導入してみようと思う。


もちろん、HTTP経由ということは、Pythonに限らず、みんなの大好きなPHPとか、PHPとか、PHPとかからも簡単にアクセスできますね!PHPerもfile_get_contentsとかを使って、どんどんTheSchwartzを使うといいと思うよ。