Je to v pořádku, aby se třeli závity v WSGI-aplikace?

hlasů
14

Chcete-li dosáhnout něčeho podobného na google ‚odložené volání‘ APP agregátu (tj žádost je zpracována, a poté se odložená úloha je řešena), i experimentoval málo a přišel s řešením, aby se třeli závit, ve kterém se moje odložená volání zacházet ,

Jsem nyní se snaží zjistit, zda se jedná o přijatelný způsob.

Je možné (podle specifikace WSGI), že proces je ukončen webserver poté, co je skutečný požadavek zacházet, ale před všemi závity dojdou?

(Pokud existuje lepší způsob, který by byl také v pořádku)

Položena 05/07/2011 v 08:53
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
13

WSGI nespecifikuje životnost procesu aplikace (jako aplikace WSGI je volatelný objekt Python). Můžete jej spustit takovým způsobem, který je zcela nezávislý na webový server, v takovém případě, pouze ovládat celý život.

K dispozici je také nic v WSGI, který by vám bránil se třít nitě, nebo procesy, nebo dělat kterákoliv peklo chcete.

Odpovězeno 05/07/2011 v 19:42
zdroj uživatelem

hlasů
7

FWIW, mají také četl o:

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

Závěsné akcí zavřít () z iterable je jediný způsob, jak v rámci specifikace WSGI sám o tom odložené práci. To není v samostatné vlákno a když by došlo v rámci aktuálního požadavku, byť po odpověď prý byla vyprázdněna zpět klientovi. Tak váš odložená akce bude konzumovat, že žádost vlákno, dokud není práce dokončena, a tak tato žádost nit by neměl být schopen zvládnout další žádosti do té doby.

Obecně platí, že pokud použijete vlákna na pozadí, neexistuje žádná záruka, že jakýkoli hosting mechanismus by počkat, dokud tyto pozadí závity kompletních před vypnutím proces dolů. Ve skutečnosti ani nemohou myslet jakéhokoli standardního mechanismu nasazení který dělá počkat. Tam opravdu není ani zaručeno, že atexit manipulátory budou vyzval procesu vypnutí, něco, co odkazované dokumentaci také stručně hovoří o.

Odpovězeno 07/07/2011 v 01:14
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more