Symfoware

Symfowareについての考察blog

pythonから「beanstalkc」でbeanstalkdにジョブを投入、取得する

phpでbeanstalkdに接続してみました。
phpからbeanstalkdに「beanstalk」でジョブを投入、取得する


キューを処理するプログラムはPythonで書くというパターンがありそうなので、
Pythonからの接続も試してみます。


beanstalkc



Pythonのライブラリがいくつか公開されています。
https://github.com/kr/beanstalkd/wiki/client-libraries

beanstalkcがメンテナンスも継続されており、
使いやすそうだったのでこれを試してみます。

https://github.com/earl/beanstalkc/



python + easy_install




まず、pythonをインストール。
easy_installが使えるようにしておきます。


# apt-get install python-dev
# apt-get install python-setuptools




beanstalkc本体をインストール。
PyYAMLに依存しているので、合わせてインストールしておきます。


# easy_install beanstalkc
# easy_install pyyaml






ジョブ登録のサンプル



https://github.com/earl/beanstalkc/
https://github.com/earl/beanstalkc/blob/master/TUTORIAL.mkd

ここらへんを参考に使い方を調べてみました。

fluxというチューブにデータを設定してみます。


  1. # -*- coding:utf-8 -*-
  2. import beanstalkc
  3. # 接続
  4. beanstalk = beanstalkc.Connection(host='localhost', port=11300)
  5. # チューブを選択
  6. beanstalk.use('flux')
  7. # データを登録
  8. beanstalk.put('sample-data')
  9. # 切断
  10. beanstalk.close()




ちゃんと登録できたようです。

463_01.png




ジョブの取り出し



先ほど登録したデータを取り出してみます。
はまったポイントですが・・・

登録時、チューブの指定は「use」
監視時は「watch」で指定します。


  1. # -*- coding:utf-8 -*-
  2. import beanstalkc
  3. # 接続
  4. beanstalk = beanstalkc.Connection(host='localhost', port=11300)
  5. # 監視するチューブを指定
  6. beanstalk.watch('flux')
  7. # ジョブを取得
  8. job = beanstalk.reserve()
  9. # 内容を表示
  10. print job.body
  11. # ジョブを削除
  12. job.delete()
  13. # 切断
  14. beanstalk.close()




実行すると、ちゃんと値が取り出せました。



# python sample.py
sample-data


関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2014/08/31(日) 19:15:20|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<SupervisorでPythonのスクリプトをデーモンプロセスとして動かす | ホーム | phpからbeanstalkdに「beanstalk」でジョブを投入、取得する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1481-ae83e1f1
この記事にトラックバックする(FC2ブログユーザー)