Ich schreibe eine Python-Anwendung, die OpenStack verwendet, um Schülern Zugang zu einer begrenzten Anzahl von virtuellen Maschinen zu ermöglichen.Planen von Reservierungen (kein Restaurant) mit Python
Studenten können jetzt oder in Zukunft Reservierungen vornehmen.
Ich muss die Anzahl der virtuellen Maschinen, die zu jeder Zeit geplant sind, auf X begrenzen, während die Schüler immer noch VMs reservieren können, wenn Slots/Reservierungen verfügbar sind.
Reservierungsobjekte sehen wie folgt aus (sqlalchemy). Ich würde die Startzeit und die Dauer der Reservierung wissen, an welcher Stelle ich bestehende Reservierungen durchgehen muss und sehen muss, ob es in dem angeforderten Zeitraum zu viele Reservierungen gibt. Die * _job-Felder sind die Namen von APScheduler-Jobs.
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)
Gibt es irgendwelche Hinweise darauf, wo man nach Beispielen für Zeitplanalgorithmen oder so etwas suchen sollte? Ich bin nicht einmal klar, was zu suchen ist ...
Danke.
Dies erscheint mir als eine Anwendung für Dijkstra's Banker's Algorithmus, der normalerweise nicht viel in der Jobplanung diskutiert wird, da seine Voraussetzungen (insbesondere Ausführungszeit) im Voraus schwer zu wissen sind, aber Sie haben. Die allgemeine Klasse des Problems ist "Batch Scheduling" – msw
Großartig. Danke dafür. :) – curtis
+1 für gut formulierte, kurze, aber komplette Frage. –