pythonのGearman Client

ここにあるのでチェックアウトしてインストールする。
http://code.sixapart.com/svn/gearman/trunk/api/python/

インストールはいつも通り、

$ sudo python setup.py install

としておいた。

使い方

「hello」というWorkerが動いてて「hello 引数」という文字列を返します。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from gearman import GearmanClient, Task

if __name__ == '__main__':
    client = GearmanClient(["127.0.0.1"])
    res = client.do_task(Task("hello", "foo"))
    print res

結果

hello foo

かんたん。

引数

$arg is an opaque scalar or scalarref representing the argument(s) to pass to the distributed function.
http://search.cpan.org/~bradfitz/Gearman-1.09/lib/Gearman/Task.pm

ってことで、Gearmanのclientからworkerに渡すことができるのはscalarかscalarrefだけのようです。
リファレンスを渡す場合はStorableのfreeze/thawが使えるけど、clientにpython、workerにperlみたいな場合はStorableじゃダメですね。なんかいい方法あるのかな。