Python'da döngü hata verirse tekrar başlaması nasıl sağlanır?

cenkkk

Megapat
Katılım
24 Haziran 2016
Mesajlar
6.053
Çözümler
16
Daha fazla  
Sistem Özellikleri
Intel Core 2 Quad Q6600 | AMD RX 6800 XT | 2 GB RAM| 250 GB Hitachi HDD|
Cinsiyet
Erkek
Arkadaşlar, aşağıdaki gibi bir döngü yaptım ve 600 saniyede bir çalışacak ancak bazen çalışmıyor ve bilinmeyen bir sebepten hata veriyor ve tekrar çalışması için 600 saniye daha bekliyor. Benim istediğim eğer bir hata olursa ve except komutu çalışırsa bu döngü, try içindeki kodlar çalışana kadar tekrar etsin ve kodlar çalışınca 600 saniye beklesin, yani hata verirse tekrar etsin ve döngü çalışınca 600 saniye beklesin, umarım anlatabilmişimdir. Bunu nasıl sağlayabilirim?
Python:
while True:

     try:

         kodlar, koşullar vs.

     except:

         print("bir hata meydana geldi")

     time.sleep(600)
 
600 saniyede bir çalışacak, fakat hata verirse tekrar deneyip, tekrar denemeden sonra 600 saniye bekleyip, döngüye devam edecek anladığım kadarıyla.

Yapılacak işler için bir fonksiyon tanımlayıp, hem try hem de except içerisinde bu fonksiyonu çağırıp yapabilirsin. Try'daki fonksiyon çalışırken exception'a düşerse, try içerisindeki sleep hiç çalışmamış olur. Yani iki kere 600 saniye beklemez.

Gerçek zaman saniyeye göre, beşinci saniyelerde exception verecek örnek bir kod yazdım.
[CODE lang="python" title="Örnek"]from time import sleep
from datetime import datetime

def fun():
now = int(datetime.now().strftime("%S"))
if now % 5 == 0:
raise Exception("Error!")
else:
print("Working...")


while True:
try:
fun()
sleep(1) # eger fun adlı fonksiyonda hata olursa, buradaki sleep hic calismadan direkt except kismina atlar.
except:
print("An error occured. Trying again...")
sleep(1) # hata sonrasi, fonksiyon tekrar cagrilmadan once, bekleme suresi koyulabilir (600 saniye kadar uzun olmasina gerek yok, birkac saniyelik bir önlem amacli. Birinci ve ucuncu sleep'ler 600 saniye olacak sekilde dusunebilirsin).
fun()
sleep(1) # hata sonrasi tekrar calistiktan sonra 600 saniye bekler.[/CODE]
 
continue kodu ile yapabilirsiniz. Direkt while'ın başına atar sizi.

Sanırım dediğiniz böyle bir şey;
1623529942218.png

Python:
import time

while True:
    try:
        x = input("Bir şey giriniz : ")
        sa = int(x) / 3
        print(sa)
        time.sleep(2)
        print("2 saniye beklendi, döngü başa alınıyor.")
        continue
    except:
        print("Hata oldu, beklenmeden döngü başa alınıyor.")
        continue
 

Yeni konular

Geri
Yukarı