2011-07-05 17 views
14

Google uygulama motorlarının ertelenmiş çağrılarına benzer bir şeye ulaşmak için (örneğin, istek ele alınır ve daha sonra ertelenmiş görev ele alınır), biraz denedim ve ertelenmiş çağrımı içeren bir iş parçacığı oluşturma çözümünü buldum. ele alınır.Bir wsgi uygulamasında iplik açmak için sorun olur mu?

Şimdi bunun kabul edilebilir bir yol olup olmadığını belirlemeye çalışıyorum.

(WSGI belirtimine göre), gerçek istek işlendikten sonra işlemin web sunucusu tarafından sonlandırılması mümkün mü, ancak tüm iş parçacıkları bitmeden mümkün mü?

(WSGI uygulama bir Python çağrılabilir nesnedir gibi)

+3

Muhtemelen her ikisi de performans için bir tür görev kuyruğu + iş parçacığı havuzu düzenlemesi yapmak ve birbirlerini açlıktan o kadar çok iş parçacığına sahip olmaktan kaçınmak isteyeceksiniz. – Marcin

+0

@Marcin: iyi bir nokta, iplik yaklaşımı yapılabilir olduğunu gösterdiğinde, böyle bir altyapıyı uygulayacağım – keppla

+0

Henüz bir cevap almadığın için hayal kırıklığına uğradım. – Marcin

cevap

7

FWIW, ayrıca bir okuma var. Bu ayrı bir iş parçacığında değildir ve yanıtın müşteriye geri döndürülmesi beklendikten sonra da olsa, gerçek talep bağlamında gerçekleşir. Böylece ertelenmiş eyleminiz, iş tamamlanana kadar iş parçacığı isteğini tüketir ve bu nedenle istek iş parçacığı, o zamana kadar diğer istekleri karşılayamaz.

Genel olarak, arka plan iş parçacıklarını kullanırsanız, herhangi bir barındırma mekanizmasının, işlemi durdurmadan önce arka plan iş parçacığı tamamlanıncaya kadar bekleyeceğinin garantisi yoktur. Aslında, beklemekte olan herhangi bir standart dağıtım mekanizmasını bile düşünemez. Atexit işleyicilerinin, işlemin kapatılmasına, başvurulan belgelerin de kısaca bahsettiği bir şey çağrılmasına gerçekten bir garanti bile yoktur.

13

WSGI bir uygulama sürecinin ömrünü belirtmez (daha iyi bir yol varsa, o da iyi olurdu). Web sunucusundan tamamen bağımsız bir şekilde çalıştırabilirsiniz, bu durumda yalnızca yaşam süresini kontrol edersiniz.

Ayrıca, WSGI'de sizi iş parçacığı ya da süreçleri ya da istediğiniz cehennemi yapmaktan men edecek bir şey yoktur.

http://code.google.com/p/modwsgi/wiki/RegisteringCleanupCode

eylemlerin kanca kapatmak için() iterable ertelenmiş işi için WSGI şartname kendisi kapsamında tek yolu arasında:

+1

Büyük terminoloji. –

İlgili konular