問題タブ [task-queue]
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.
ruby-on-rails - Ruby/Rails同期ジョブマネージャー
こんにちは
私はrails-websiteをセットアップします。そこでは、最初のユーザー入力の後、いくつかの重い計算が行われます(c-extension to rubyを介して、マルチスレッドを使用します)。これらの計算はほぼすべてのCPU時間(メモリも)を消費するため、一度に複数の計算を実行することはできません。また、レールはその計算の結果を表示する必要があり、サイトはjavascriptなしで動作するはずなので、(非同期の)バックグラウンドジョブ(遅延ジョブのように)を使用することはできません。
したがって、すべてのRailsインスタンスが計算要求をキューに入れ、応答を待つ必要がある別のプロセスが必要だと思います(キューがいっぱいの場合はエラーメッセージかもしれません)、一種の同期ジョブマネージャーです。
そのような機能を備えたgem/プラグインがあるかどうか誰かが知っていますか?(naniteは私にはかなりクールに見えましたが、非同期であるように見えるので、railsインスタンスは計算がいつ終了するかわかりません。それは正しいですか?)
別のアイデアは、分散ルビー(drb)を使用して自分で書くことですが、なぜ発明するのですか?それがすでに存在する場合、再びホイール?
どんな助けもいただければ幸いです!
編集:zaiusのヒントのおかげで、これは非同期で実行できると思うので、resqueを試してみます。
java - キュー処理用のJavaAPIまたはフレームワーク
キュー内のアイテムを処理するためのオープンソースのJavaAPIまたはフレームワークが必要です。私は自分で何かを開発することはできますが、車輪の再発明をしたくありません(そして、マルチスレッドの経験はあまりありません)。そんなことあるの?
私が考えることができる最も近いソリューションは、ビジネスプロセス管理(BPM)ソリューションです。
現在、キュー内のアイテムを処理するために複数のQuartzジョブを使用しています。スケーラビリティと同時実行性の問題のため、実際には機能していません。
google-app-engine - Google App Engine リクエスト ステータス
システムが 500 をスローしても、http 要求ステータスを 200 に設定することは可能ですか? 実行中のタスクがあります。GAE が http リクエスト 500 をスローするとき、タスクが再試行されないように、タスクの最後に手動で 200 に設定したいと考えています。
java - App Engine (Java) が新しいインスタンスをスピンアップするとき、Task Queue Memcache cron がインスタンス間で共有されるようにするにはどうすればよいですか?
これは、memcache を再設定するタスク キューを呼び出すために 1 時間ごとに頻繁に実行される cron タスクの結果として、ほとんどすべての作業が完了しているサイトで、アプリが時折 CPU 制限のピークを経験する問題です。
最近、サイトのトラフィックが急増し、複数のインスタンスがスピンアップしました。
しかし、驚いたことに、トラフィック スパイクに関連する CPU 使用率は 1% 未満だったにもかかわらず、当時は Memcache タスクの頻度を減らす必要がありました。(このアプリで行われる作業の 99% は、(a) memcache タスク キューで、(b) クライアント側の JavaScript/JSON ロジックで行われます)。
私が疑問に思っているのは、スピンアップされた追加のインスタンスがすべて独自の Memcache タスク キューを必要とするかどうかということです。おそらくこれが、当時の期間に memcache を再作成するタスク キューに関連するはるかに高い CPU 使用率を見た理由です。タスクは実際にはインスタンスごとに個別に実行されていますか?
もしそうなら、どうすればタスク キューとそれが生成する Memcache がインスタンス間で共有されていることを確認できますか?
google-app-engine - GoogleAppEngineのタスクの期限
タスクの実行中にソフト期限を処理する方法はありますか?DeadlineExceededErrorは、実行の10分後にスローされ、その後数秒でいくつかの処理が行われます。タスクが終了する前に何かをクリーンアップして、新しいタスクを作成したいと思います。これには数秒かかる場合があります。約9分のような例外をキャプチャすることによってこれを行う方法はありますか?9分後に手動で例外をスローできることはわかっています。しかし、これはGAEによって自動的に実行できますか?
上記は私のコードです。indexはリストであり、0から始まります。FillMtx内でインクリメントされます。期限超過エラーがスローされたら、最後にインデックスがインクリメントされたところから続行したいと思います。次のエラーが発生します
新しいタスクが作成され、キューに入れられていることがわかりました。しかし、なぜGAEはこのエラーをまだスローするのですか?
java - Google App Engine(Java)TaskQueue API:実行中/保留中のタスクの数をクエリする方法は?
タスクキューAPIをプログラムでクエリして、現在実行中/保留中のタスクの数を確認することはできますか?
APIでこれを行う方法がわからないため、キューに入れられたタスクを表すためにデータストアにオブジェクトを作成することにしました。実行すると、タスクは対応するエントリをデータストアから削除します。
ご想像のとおり、これは簡単に同期しなくなります。特定のキュー名のキュー内のタスクの単純な数を取得できることは、実際には非常に嬉しいことです。
java - GoogleAppEngine-タスクキューの名前とトランザクション
Google App Engineのドキュメントでは、以下に記載されています(こちらをご覧ください)。
トランザクションタスクには、ユーザー指定の名前を付けないでください。
トランザクション内のタスクには自動的に名前が割り当てられますか、それとも他の理由がありますか?
python - PythonAPIを使用したGoogleAppEngineタスクキューエラー
Python Web開発について詳しく知るために、遊んでいるFlask + GAEプロジェクトのタスクキューアクションを実装しましたが、次のエラーが発生し、それに関する情報を追跡できません。
アプリケーションの別のビューからPOSTリクエストを受け入れているビューがあり、私が知る限り、それが最後に到達してこれを吐き出すことを除いて、私が期待しているすべての処理を実行しています。GAE devserverログにこの出力が表示されるので、これを推測しています。
check_for_spamは、Defensio APIを介して一部のデータを実行し、それがスパムであるかどうかを判断する関数です。これがコードです
この問題を解決するための助けをいただければ幸いです。
python - Django で Google App Engine キュー サービスを使用する
Google App Engine キュー API を使用しようとしていますが、これをテストする際に問題が発生しています。プロセスの一部で CSRF が機能していないようです。
私が理解しているように、APIはURLを呼び出してバックグラウンドでhttpリクエストを作成するタスクを実行します。
API が呼び出している完全な URL は → http://localhost.localdomain:8000/admin/cooking/recipe/36/chefworker/ です。
この例外が発生した場合:
そのため、csrf ミドルウェア、Cookie、一部のデータ、または応答自体が、GAE API がバックグラウンドでタスクを実行するために行う要求から欠落しています。
DjangoでCSRFを無効にせずにこれを解決するには? しかし、それはdjangoappengineで可能ですか?
私が使用しているmodels.pyとadmin.pyファイルは下にあります。
models.py
admin.py
重要な注意: このエラーをデバッグするのは困難でした。これは、dev_appserver ロガーが 403 エラーを発生させただけで、他の情報がないためです。そのため、ファイル google/appengine/api/taskqueue/taskqueue_stub.py の 574 行目にパッチを適用し、「logging.info('response --- \n%s' % result)」を追加して出力を取得する必要があります。
python - Google App Engine ペイロード オブジェクト
Pythonでタスクのペイロードでクラスオブジェクトを送信する方法は? タスクのパラメーターでオブジェクトを送信したい。
を使用するsimplejson
と、次のエラーが表示されますObject is not serializable
。
ピクルスを使うとKeyValue Error
.
これを行う方法 ?
これは私がシリアライズしたいクラスです
ピクルされたオブジェクトをペイロードとして渡し、後でアンロードすると、次のエラーが発生します