Loops kombinieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
reini910
User
Beiträge: 2
Registriert: Samstag 19. Oktober 2019, 22:45

Hallo miteinander,

beim Schreiben meines kleinen Skriptes zur Automatisierung von einigen Aufgaben bin ich auf ein kleines Problem gestoßen.

Ich habe einen Loop für 25 Wiederholungen wie folgt eingesetzt:

Code: Alles auswählen

    for i in range(25):
        #Programmteil 1
    #Programmteil 2
    
Ab und an kommt es allerdings zu Problemen bei der automatisierten Sache, sodass das Skript die 25 Wiederholungen nicht ausführen kann und damit Programmteil 2 nicht gestartet wird.

Deshalb würde ich den Loop mit den 25 Wiederholungen gern mit einem anderen verknüpfen, der nach spätestens 1 Stunde ausgelöst wird.

Bedeutet: Das Skript versucht erst die 25 Wiederholungen durchzuführen, wenn das aber nicht innerhalb von 1 Stunde passiert, wird dennoch Programmteil 2 gestartet.

Ich hoffe ich konnte mein Problem genau genug beschreiben und hoffe, dass mir jemand dabei helfen kann.

In jedem Fall einen schönen Sonntag

Viele Grüße
reini
Benutzeravatar
__blackjack__
User
Beiträge: 14047
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@reini910: Man könnte an einer passenden Stelle in der ``for``-Schleife schauen ob bereits eine Stunde vergangen ist, und die Schleife dann abbrechen:

Code: Alles auswählen

#!/usr/bin/env python3
from datetime import datetime as DateTime, timedelta as TimeDelta
import logging


def main():
    ...
    start_time = DateTime.now()
    for _ in range(25):
        elapsed_time = DateTime.now() - start_time
        if elapsed_time >= TimeDelta(hours=1):
            logging.info("Breche Programmteil 1 nach %s ab.", elapsed_time)
            break

        # Programmteil 1
        ...
    else:
        logging.info("Programmteil 1 komplett durchlaufen.")

    # Programmteil 2
    ...


if __name__ == "__main__":
    main()
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

@reini910: man müsste schon genauer wissen, was in der Schleife passiert und warum sie hängen bleibt. Denn davon hängt es ab, wie man einen Timeout integrieren könnte.
Antworten