OpenStackを使用して限られた数の仮想マシンにアクセスできるようにするPythonアプリケーションを作成しています。Pythonで予約を予約する(レストランではない)
生徒は現在または将来のいずれかで予約を行うことができます。
いつでもスケジュールされた仮想マシンの数をXに制限する必要がありますが、スロット/予約が利用可能な場合でもvmsを予約することができます。
予約オブジェクトは以下のようになります(sqlalchemy)。私は開始時間と予約の長さを知っています。その時点で、私は既存の予約を通過し、要求された期間に予約が多すぎるかどうかを確認する必要があります。 * _jobフィールドは、APSchedulerジョブの名前です。
class Reservation(Entity):
student = ManyToOne('Student', required=True)
class_id = ManyToOne('Class', required=True)
image = ManyToOne('Image', required=True)
# openstack image id filled in once the instance is started
instance_id = Field(UnicodeText)
# apscheduler jobs
stop_instance_job = Field(UnicodeText)
start_instance_job = Field(UnicodeText)
warn_reservation_ending_job = Field(UnicodeText)
check_instance_job = Field(UnicodeText)
スケジュールアルゴリズムの例などを探すためのポインタはありますか?私は何を探すべきか明確ではない...
ありがとう。
これは、DijkstraのBanker's Algorithmのアプリケーションとして私には当てはまります.DijkstraのBanker's Algorithmは、その前提条件(特に実行時間)が事前に知るのが難しいが、あなたが持っているので、通常はジョブスケジューリングではあまり説明されません。問題の一般的なクラスは「バッチスケジューリング」 – msw
です。親切にそれをありがとう。 :) – curtis
+1は、よく綴られた、短い、しかし完全な質問です。 –