Konuyu Açan #1
Python Socket Timeout Ayarları

Python'da socket kullanırken, ağ bağlantılarında zaman aşımı (timeout) ayarları kritik öneme sahiptir. Bu ayarlar, bağlantıların veya veri iletiminin belirli bir süre içinde tamamlanmaması durumunda programın beklemeyi durdurup, hatayı yakalayarak düzgün bir şekilde ilerlemesini sağlar. Özellikle uzun süredir cevap alamayan sunucular veya yavaş ağlar söz konusuysa, timeout ayarları programın çökmesini engelleyip, hata yönetimini kolaylaştırır.

İlk olarak, socket nesnesi oluşturulduktan sonra settimeout() metodu kullanılarak belirli bir zaman dilimi tanımlanır. Bu süre saniye cinsinden ifade edilir ve float veya None alabilir. None değeri, zaman aşımı olmadan bağlantı kurmayı veya veri almayı sağlar. Örneğin:

KOD
123456789101112131415
import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)  # 10 saniyelik zaman aşımı belirleniyor
try:
    sock.connect(("example.com", 80))
    sock.sendall(b"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
    response = sock.recv(4096)
except socket.timeout:
    print("Bağlantı zaman aşımına uğradı.")
except socket.error as e:
    print(f"Hata oluştu: {e}")
finally:
    sock.close()


Burada, settimeout ile belirlenen süre aşılırsa, socket.timeout istisnası yakalanır ve uygun hata yönetimi yapılabilir. Ayrıca, gettimeout() metodu ile mevcut timeout değeri sorgulanabilir. Zaman aşımı sıfır veya negatif ise, bu, zaman aşımı olmadan bağlantı anlamına gelir.

Bazı durumlarda, socket üzerinde farklı zaman aşımı ayarları yapmak gerekebilir. Örneğin, bağlantı kurulurken farklı bir süre, veri alırken farklı bir süre belirlemek isterseniz, settimeout() yerine setblocking() ve settimeout() kombinasyonları kullanılabilir. Ayrıca, select modülü ile de detaylı zaman aşımı kontrolü yapılabilir.

Sonuç olarak, Python'da socket zaman aşımı ayarları, ağ programlama sırasında kararlılığı artırır ve beklenmedik durumlardan doğan hataları yönetmek için temel araçtır. Bu ayarları doğru yapılandırmak, uygulamanızın güvenilirliğini doğrudan etkiler.

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi