問題タブ [python-rq]

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.

0 投票する
2 に答える
1184 参照

python - 大容量メモリの Python バックグラウンド ジョブ

MongoDB データベースにデータをロードする Flask サーバーを実行しています。大量のデータがあり、時間がかかるため、バックグラウンド ジョブで実行したいと考えています。

メッセージ ブローカーとして Redis を使用し、ジョブ キューを実装するために Python-rq を使用しています。すべてのコードは Heroku で実行されます。

私が理解しているように、python-rq は pickle を使用して、実行する関数 (パラメーターを含む) をシリアル化し、これを他の値と共に Redis ハッシュ値に追加します。

パラメータにはデータベースに保存する情報が含まれているため、非常に大きく (~50MB)、これをシリアル化して Redis に保存すると、かなりの時間がかかるだけでなく、大量のメモリも消費します。Heroku の Redis プランは、100MB のみで月額 30 ドルかかります。実際、次のようなOOMエラーが頻繁に発生します。

OOM command not allowed when used memory > 'maxmemory'.

2 つの質問があります。

  1. python-rq はこのタスクに適していますか、それとも Celery の JSON シリアライゼーションの方が適切でしょうか?
  2. パラメータをシリアル化せずに参照する方法はありますか?

最善の解決策についてのご意見をお待ちしております。

0 投票する
0 に答える
76 参照

python - Python ジョブのタスク スケジューラ

異なる引数で実行したいメイン関数が 1 つあります。omxplayerを使ってraspberry piで動画を再生する機能です。特定のタスクの実行を計画できるスケジューラを使用したいのですが、タスクが実行される時間を定義したり、キューを作成したりする必要があります。このメイン関数を実行すると、スケジューラはこのタスクをキューの最後に配置します。

私はPython-RQを試してみましたが、それは良いのですが、問題は、前のジョブの名前がわからない場合、キューの最後に新しいタスクを追加する方法がわからないことです..

ジョブをキューに追加する機能があります。

どちらが実行されます:

要件を満たすスケジューラを知っていますか? python rqで何をアドバイスできますか? 1つずつ行う方法はありますか?常にキューの最後にジョブを追加するにはどうすればよいですか?

ありがとうございました。