問題タブ [beanstalkd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
http - http リクエスト/レスポンス モデルを非同期キューに接続する
同期 http リクエスト/レスポンス モデルを非同期キュー ベースのモデルに接続する良い方法は何ですか?
ユーザーの HTTP 要求が来ると、キュー (この場合はbeanstalkd ) に送られる作業要求が生成されます。ワーカーの 1 人がリクエストを受け取り、作業を行い、レスポンスを準備します。
キュー モデルはリクエスト/レスポンスではありません。レスポンスではなく、リクエストのみがあります。問題は、応答を HTTP の世界に戻し、ユーザーに戻すにはどうすればよいかということです。
アイデア:
Beanstalkd は、軽量のトピックまたはキュー (チューブと呼ばれます) をサポートしています。リクエストごとにチューブを作成し、ワーカーにそのチューブでメッセージを作成させ、http プロセスをチューブに置いて応答を待機させることができます。これは特に好きではありません。Apache プロセスがメモリを占有しているからです。
http クライアントに応答をポーリングさせます。ユーザーの最初の HTTP 要求は、キューでジョブを開始し、すぐに戻ります。クライアント (ユーザーのブラウザー) は定期的に応答をポーリングします。バックエンドでは、ワーカーはその応答を memcached に置き、nginx を memcached に接続して、ポーリングが軽量になるようにします。
コメットを使用します。2 番目のオプションに似ていますが、ポーリングを回避するためにより洗練された http 通信を使用します。
簡単でよく知っているので、私は2に傾いています(私はまだコメットを使用していません)。おそらく、私が思いもよらなかった、はるかに優れた明白なモデルもあると思います。どう思いますか?
python - Python 2.5 の select モジュールの問題
Beanstalk キューをリッスンする Python 2.5 のアプリケーションがあります。新しく購入した MacBook Pro を除いて、これまでにテストしたすべてのマシンで問題なく動作します。
そのコンピューターで実行しようとすると、次のエラーが発生します。
serverconn.py には次のインポートがあります。
また、コマンドラインから実行しようとすると、失敗します:
何が起こっているのかについて何か考えがありますか?
PS: ソースの問題ではないと確信していますが、失敗しているソースに関する背景情報が必要な場合は、[ http://pastie.org/399342 ](このパスティ) で入手できます。
更新:私が得た最初の回答以来、select.poll()がMac OSでサポートされているかどうかを推測していますが、iMacもあり、まったく同じOSバージョンで正常に動作します:
python - Solaris の BeanStalkd は、Python ライブラリから呼び出されたときに何も返さない
Solaris 10 OS (x86) を使用しています。私はbeanstalkdをインストールし、コマンド「beanstalkd -d -l hostip -p 11300」を使用して正常に起動しました。
私のシステムにはPython 2.4.4があります。YAMLとbeanstalkc pythonライブラリをインストールして、beanstalkdをpythonに接続しました。問題は、コードを記述しようとしたときです。
import beanstalkc beanstalk = beanstalkc.Connection(host='hostip', port=11300)
これまでのところエラーはありませんが、キューのリストなど、Beanstalk で何かをしようとすると。何も起こりません。
豆の木.チューブ()
ハングするだけで、何も返されません。操作をキャンセルするか (Python 環境で ctr+c を使用)、サーバーを停止すると、すぐに出力が表示されます。
トレースバック (最新の呼び出しが最後): ファイル ""、1 行目、? ファイル「/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py」、134 行目、チューブ内で self._interact_yaml('list-tubes\r\n を返す) ', ['OK']) ファイル "/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py"、83 行目、_interact_yaml サイズ、= self. _interact(command, expected_ok, expected_err) ファイル "/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py"、57 行目、_interact ステータス、結果 = 自己._read_response() ファイル "/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py"、66 行目、_read_response 応答 = self.socket_file.readline() .split() ファイル "/usr/lib/python2.4/socket.py"、332 行目、readline data = self 内。
何が起こっているのですか?私は Unix の初心者なので、これを引き起こすためにセットアップが間違っていた理由がわかりません。
編集: 問題は BeanStalkd 自体にあるようですが、Solaris 10 でこれを使用した人はいますか? もしそうなら、どのバージョンを使用しましたか? v1.3 というラベルの付いたものは、Solaris ではコンパイルされませんが、git コード リポジトリからの最新のものはコンパイルされ、上記の問題が発生します (または、Solaris で行うべき構成がいくつかありますか?)。
edit2:beanstalkd、PyYAML、pythonbeanstalc、およびlibeventを使用して同じコンポーネントをUBUNTUマシンにインストールしてコンパイルしたところ、正常に動作しました。問題は、solaris での beanstalkd のコンパイルに関するものと思われます。まだ解決策を作成したり読んだりしていません。
php - beanstalkd による PHP 非同期処理。あなたはそれをお勧めしますか?
beanstalkd [ http://kr.github.com/beanstalkd/ ] を使用することをお勧めしますか?
PHPでの非同期処理?
このライブラリを使用したことがある人からのフィードバック/コメントの賛否両論が必要です。
ありがとう、
python - Python (または任意の UNIX) クライアントからの beanstalkd への認証の追加
ですから、beanstalkd の好きなところは、小さく、軽量で、メッセージの優先度が高く、優れたクライアント セットがあり、使いやすいことです。
Beanstalkd について私が気に入らない点: ポートに接続できればメッセージを挿入できる認証手段がないこと。
したがって、私の考えでは、信頼できるシステムにファイアウォールを適用するか (これは維持するのが面倒で、アプリケーションの外部に別のレイヤーを追加するのが面倒です)、またはstunnelのようなものを使用して TLS/SSL でラップすることです(これにより、かなりのチャンクが発生します)。接続の確立に関するオーバーヘッドなど)。ジョブに署名することも考えました (ジョブ文字列の MD5 または SHA + 時間値 + ジョブに追加されたシークレット) が、攻撃者が偽のジョブでサーバーをあふれさせた場合、私はまだ問題を抱えています。攻撃者からの偽のメッセージの挿入から beanstalkd を保護する他の方法を考えられる人はいますか? 特に、計算上または管理上、多くのオーバーヘッドが発生しないもの。
php - PHP の beanstalkd バックグラウンド プロセスのステータスを確認する
特定のリソースを集中的に使用するタスクがバックグラウンド プロセスによって処理される、PHP (CakePHP) で記述された Web サイトがあります。これは、Beanstalkd メッセージ キューを介して行われます。そのバックグラウンド プロセスのステータスを取得して、Monit で監視できるようにする方法が必要です。
バックグラウンド プロセスは、Beanstalkd と通信する CakePHP シェル (単なる PHP CLI スクリプト) です。Benastalkd で reserve() を実行し、新しいメッセージを待つだけです。メッセージを受け取ると、それを処理します。何か問題が発生した場合にバックグラウンド プロセスを再開できるように、 Monitを使用してこのプロセスを監視する何らかの方法が必要です。
これまで考えてきたことは、Beanstalkd にメッセージをドロップする PHP CLI スクリプトを作成することです。バックグラウンド プロセスがメッセージを取得し、何らかの方法でその内部ステータスを CLI スクリプトに伝えます。しかし、どのように?ソケット?共有メモリ?他の IPC メソッドはありますか?
それとも、ここでは複雑すぎるのでしょうか。Monit を使用してそのようなプロセスを監視するより簡単な方法はありますか?
前もって感謝します!
message-queue - CRON経由のメッセージキューとDBテーブルキュー
かなり多くのメディア処理 (画像、ビデオ) や電子メール出力などを含む大規模なプロジェクトが近日中に予定されています。通常は「email_queue」と呼ばれるテーブルに入れるようなもので、cron を使用してスクリプトは、テーブル内のキューを処理します。
私は、beanstalkd のようなメッセージ キュー システムについて多くのことを読んでおり、それをセットアップしたことさえあります。簡単で使いやすかったです。問題は、何かが足りないかどうかわからないことです。
テーブルと CRON ではなく、キュー システムを使用する利点を詳しく説明してもらえますか? 私は本当に彼らが何であるかを見ることができないので。
ありがとう
list - memcached では、List を値として入れることができます。beanstalkd にリストを入れることはできますか?
実際には、これをロギングに使用したいと考えています。辞書をbeanstalkdに入れたいです。
誰かが私の Web サイトにアクセスするたびに、beanstalkd に辞書を入れたいと思っています。そして毎晩、すべてのジョブを取得してデータベースに貼り付けるスクリプトが必要です。
これにより、迅速かつ簡単になります。
perl - Beanstalkdの条件付きワークキュー挿入?
私はbeanstalkdのPerlクライアントを使用しています。同じ作業を2回エンキューしない簡単な方法が必要です。
基本的にK個の要素ができるまで待ってからグループ化する必要があるものが必要です。これを達成するために、私にはプロデューサーがいます:
そして消費者:
これは、リクエスト/処理の数に比例しますが、次の場合です。
これらすべての挿入がジョブが取得される前に発生したと仮定すると、これによりN個のキュー項目が追加され、次のようになります。
後のジョブリクエストを不必要に挿入/処理しないように、これを行うためのよりスマートな方法はありますか?
monitoring - Beanstalkdの統計/モニター/インスペクター
Beanstalkdキューを監視できるアプリを知っている人はいますか?チューブとジョブの統計を表示し、詳細を検査できるものを探しています。
私は言語/プラットフォームについてあまり気になりません。自分で書く前に、そこに何かがあるかどうかを知りたいだけです。