Python ile soket programlama ve multiprocessing modülü
Bu yazıda, Python'daki multiprocessing ve socket modüllerini kullanarak basit bir HTTP sunucusu yapacağız. Bu modülleri kullanmak isteyenler ancak nereden başlayacağını bilemeyenler bu basit örnekle konuya giriş yapabilirler.
Yaptığım şey özetle şu; 5 tane işlem port 9090'ı dinliyor. Gelen isteklere sırasıyla cevap veriyorlar. Python içindeki Threading modülünden farkı ne derseniz, Python'daki GIL (Global Intrepreter Lock) yüzünden, threading modülü ile birden fazla işlemciyi aynı anda kullanamıyorsunuz. Ancak multiprocessing ile birden fazla işlem çalıştığı için, işlemcinizin tüm olanaklarından yararlanabilirsiniz :)
Ekleme:
Ayrıca, Python'daki SocketServer modülün kullanarak şöyle birşeyler yapmak da mümkün:
Burada normal TCP server yerine, Forking TCP server kullanmayı tercih ettiğime dikkat edin. SocketServer.TCPServer sınıfı, her seferinde tek bir istemciye cevap verecek şekilde çalışıyor. ForkingTCPServer ise, her yeni bağlantı için yeni bir işlem oluşturuyor (fork ediyor.). Böylece birden fazla bağlantıya aynı anda cevap verebiliyor. Çalışma şekli benim yukarıda yaptığımdan biraz daha farklı ama, alınan sonuçlar birbirine yakın.