Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
multiprocess problem se sirotkem
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  10 messages - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Tomas Pelka  
View profile   Translate to Translated (View Original)
 More options Sep 5 2012, 4:01 am
Newsgroups: cz.comp.lang.python
From: Tomas Pelka <tompe...@gmail.com>
Date: Wed, 05 Sep 2012 09:50:32 +0200
Local: Wed, Sep 5 2012 3:50 am
Subject: [python] multiprocess problem se sirotkem

Zdravim vsechny,

resim nasledujici problem a verim, ze mi nekdo z vas pomuze.

Potrebuji z cgi skriptu (interpretuje jej jednoduchy httpserver) pustit
dlouho bezici ulohu ale tak abych nemusel volat mutiprocess.join(),
protoze pak stranka zustane viset. Jak jsem zminil pouzivam k tomu
multiprocess, ktery pouze nastartuji ale nejoinu. Vse ale nasvercuje
tomu, ze proces je zabyt i kdyz by mel byt daemonem.

import multiprocess

mp = Process(target=__handle_execution, args=(args,))
mp.daemon = True
mp.start()

-- zde je konec cgi skriptu --

Ma nekdo s podobnym chovanim zkusenosti?

Diky

--
Tomas Pelka


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
azurIt  
View profile   Translate to Translated (View Original)
 More options Sep 5 2012, 4:11 am
Newsgroups: cz.comp.lang.python
From: "azurIt" <azu...@pobox.sk>
Date: Wed, 05 Sep 2012 09:56:08 +0200
Local: Wed, Sep 5 2012 3:56 am
Subject: Re: [python] multiprocess problem se sirotkem
Ahoj,

proces je ukonceny pretoze jeho parent skoncil (proces web serveru -> CGI skript). Ak si na linuxe, tak toto nie je mozne takymto sposobom urobit (resp. nie je mi znamy sposob). Ine OS neviem.

azur

______________________________________________________________


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Tomas Pelka  
View profile   Translate to Translated (View Original)
 More options Sep 5 2012, 4:21 am
Newsgroups: cz.comp.lang.python
From: Tomas Pelka <tompe...@gmail.com>
Date: Wed, 05 Sep 2012 10:04:00 +0200
Subject: Re: [python] multiprocess problem se sirotkem
Aha takze ani daemon = True nepomuze, chjo tak to budu muset udelat
jinak. Ale zatim me nenapada jak :/

On Wed 05 Sep 2012 09:56:08 AM CEST, azurIt wrote:

--
Tomas Pelka

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jirka Vejrazka  
View profile   Translate to Translated (View Original)
 More options Sep 5 2012, 4:21 am
Newsgroups: cz.comp.lang.python
From: Jirka Vejrazka <jirka.vejra...@gmail.com>
Date: Wed, 5 Sep 2012 10:12:43 +0200
Local: Wed, Sep 5 2012 4:12 am
Subject: Re: [python] multiprocess problem se sirotkem
Zni to jako chyba v navrhu uz v principu :0

Celery (resp. jeho zavislosti) je trochu velke zvire na takovou
drobnost. Co treba mit na tom stroji s standardne pusteny Pyhton
process, ktery se bude starat o ty dlouho bezici ulohy a ten CGI
skript mu jenom preda potrebne vstupni parametry pres
multiprocessing.Queue?

  Jirka


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Visgean Skeloru  
View profile   Translate to Translated (View Original)
 More options Sep 5 2012, 4:21 am
Newsgroups: cz.comp.lang.python
From: Visgean Skeloru <visg...@gmail.com>
Date: Wed, 5 Sep 2012 10:08:00 +0200
Subject: Re: [python] multiprocess problem se sirotkem

A neslo by pouzit neco jako Celery? celeryproject.org/ Mozna je to trochu
overkill ale co jsem s tim delal naposledy tak se to osvedcilo...

2012/9/5 Tomas Pelka <tompe...@gmail.com>

--
GPG pub key<http://keyserver.pgp.com/vkd/SubmitSearch.event?SearchCriteria=visgea...>
 | github/visgean <http://github.com/Visgean> | jabber <visg...@jabber.cz>

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Petr Messner  
View profile   Translate to Translated (View Original)
 More options Sep 5 2012, 4:31 am
Newsgroups: cz.comp.lang.python
From: Petr Messner <petr.mess...@gmail.com>
Date: Wed, 5 Sep 2012 10:14:12 +0200
Local: Wed, Sep 5 2012 4:14 am
Subject: Re: [python] multiprocess problem se sirotkem
Na Linuxu mi právě běží spousta procesů, jejichž parent už neběží :)

Petr Messner

Dne 5. září 2012 9:56 azurIt <azu...@pobox.sk> napsal(a):


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
azurIt  
View profile   Translate to Translated (View Original)
 More options Sep 5 2012, 4:31 am
Newsgroups: cz.comp.lang.python
From: "azurIt" <azu...@pobox.sk>
Date: Wed, 05 Sep 2012 10:15:13 +0200
Local: Wed, Sep 5 2012 4:15 am
Subject: Re: [python] multiprocess problem se sirotkem
Dalo by sa to este spustit cez cron, ten nema problem s dlhobeziacimi ulohami.

azur

______________________________________________________________


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Filip Štědronský  
View profile   Translate to Translated (View Original)
 More options Sep 5 2012, 4:41 am
Newsgroups: cz.comp.lang.python
From: Filip Štědronský <regn...@seznam.cz>
Date: Wed, 05 Sep 2012 09:26:58 +0100
Local: Wed, Sep 5 2012 4:26 am
Subject: Re: [python] multiprocess problem se sirotkem
 On Wed, 05 Sep 2012 09:56:08 +0200, azurIt wrote:

> Ahoj,

> proces je ukonceny pretoze jeho parent skoncil (proces web serveru ->
> CGI skript). Ak si na linuxe, tak toto nie je mozne takymto sposobom
> urobit (resp. nie je mi znamy sposob). Ine OS neviem.

 Ukončení parenta rozhodně (ani na unixu, ani na win32) _rozhodně_
 obecně
 nezpůsobí ukončení childů. Někdo je musí zabít úmyslně. Podezříval
 bych:
 1) multiprocessing
   - slouží k dost specifickým účelům a je možné, že všechny procesy
     považuje za provázený celek a "by design" je při ukončení hlavního
     procesu postřílí (podobně, jako by skončily thready). Určitě bude
     zmíněno v dokumentaci.
 2) webserver
   - je-li přísný a chce, aby po cgi skriptech nic nezbylo

 S pozdravem
 Filip Štědronský


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Tomas Pelka  
View profile   Translate to Translated (View Original)
 More options Sep 5 2012, 4:41 am
Newsgroups: cz.comp.lang.python
From: Tomas Pelka <tompe...@gmail.com>
Date: Wed, 05 Sep 2012 10:32:23 +0200
Local: Wed, Sep 5 2012 4:32 am
Subject: Re: [python] multiprocess problem se sirotkem

On 09/05/2012 10:12 AM, Jirka Vejrazka wrote:

> Zni to jako chyba v navrhu uz v principu :0

To jiste je.

> Celery (resp. jeho zavislosti) je trochu velke zvire na takovou
> drobnost. Co treba mit na tom stroji s standardne pusteny Pyhton
> process, ktery se bude starat o ty dlouho bezici ulohy a ten CGI
> skript mu jenom preda potrebne vstupni parametry pres
> multiprocessing.Queue?

Presne o tomto jsem take premyslel. Budu tedy muset trochu upravit.

Diky

--
Tomas Pelka


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Petr Messner  
View profile   Translate to Translated (View Original)
 More options Sep 5 2012, 5:01 am
Newsgroups: cz.comp.lang.python
From: Petr Messner <petr.mess...@gmail.com>
Date: Wed, 5 Sep 2012 10:45:53 +0200
Local: Wed, Sep 5 2012 4:45 am
Subject: Re: [python] multiprocess problem se sirotkem
Ahoj,

můžeš nějak zjistit, jak a čím je ten proces zabit? Třeba přes strace nebo gdb.

Jednoduchý CGI skript, který spustí něco časově delšího přes
subprocess.Popen (ale samozřejmě nejoinuje) a hned se ukončí, mi
funguje a proces na pozadí zůstane běžet. Ale záleží na tom, co s tím
dělá ještě ten server. Můžeš sem poskytnout nějaký konkrétní příklad,
který se dá spustit a vykazuje to tu chybu? Včetně toho, jak přesně se
to spouští. Může to být nějaký detail, okolo procesů v unixu jsou
ještě věci jako process group, připojená konzole, session leader...
Pak se musejí dělat double forky a podobné srandy.

Jinak, abych to shrnul, už se tu asi zmínily všechny obecnější
způsoby, jak to řešit:

1) CGI skript uloží někam informace o tom, že je potřeba něco udělat a
nechá to na něčem jiném. To něco jiného, které tyto joby provádí, může
být:
1.1) nějaký proces, který neustále monitoruje, zda není nějaký nový
job a pokud ano, tak to provede; toto lze zkomplikovat více workery,
chytřejší (push místo pull) detekcí jobu - místo typické databáze lze
použít message brokery (např. RabbitMQ) atd.
1.2) cron script, který dělá to samé jako 1.1), jen to není
dlouhoběžící proces. Tohle je asi nejjednodušší, pokud nevadí vyšší
latence (spouštění jednou za minutu) a pokud ten skript při spouštění
nebere příliš hodně CPU nebo I/O.
1.3) použití nějakého softwaru pro task queue, který je určen právě
pro tyto situace, např. již zmíněné Celery

2) Spouštět proces přímo z CGI skriptu, jak píšeš. Zde bych ale uvedl
pár nevýhod:
- jak je vidět, někdy to nefunguje kvůli nějakým detailům ohledně
ukončování procesů :)
- obecně se nepočítá s tím, že po ukončení zpracování požadavku ještě
něco zbyde. To může přinášet problémy třeba při restartu.
- není kontrola nad tím, kolik takových procesů se vlastně spustí,
mohou dojít prostředky, výrazně to usnadňuje DoS útoky. U řešeních
popsaných v 1) lze relativně snadno kontrolovat, kolik workerů bude ty
joby zpracovávat, případně nějak monitorovat jejich prostředky.
- prostě mi to nepřijde jako elegantní řešení problému, spíš jako hack :)

Zdar

PM

Dne 5. září 2012 9:50 Tomas Pelka <tompe...@gmail.com> napsal(a):


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »