問題タブ [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.
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 つの質問があります。
- python-rq はこのタスクに適していますか、それとも Celery の JSON シリアライゼーションの方が適切でしょうか?
- パラメータをシリアル化せずに参照する方法はありますか?
最善の解決策についてのご意見をお待ちしております。
python - Python ジョブのタスク スケジューラ
異なる引数で実行したいメイン関数が 1 つあります。omxplayerを使ってraspberry piで動画を再生する機能です。特定のタスクの実行を計画できるスケジューラを使用したいのですが、タスクが実行される時間を定義したり、キューを作成したりする必要があります。このメイン関数を実行すると、スケジューラはこのタスクをキューの最後に配置します。
私はPython-RQを試してみましたが、それは良いのですが、問題は、前のジョブの名前がわからない場合、キューの最後に新しいタスクを追加する方法がわからないことです..
ジョブをキューに追加する機能があります。
どちらが実行されます:
要件を満たすスケジューラを知っていますか? python rqで何をアドバイスできますか? 1つずつ行う方法はありますか?常にキューの最後にジョブを追加するにはどうすればよいですか?
ありがとうございました。