On 04/03/2017 12:22 PM, Shlomi Fish wrote: > Hi Andy! > > On Mon, 3 Apr 2017 09:15:37 +0100 > Andrew Beverley <a...@andybev.com> wrote: > >> On Mon, 3 Apr 2017 11:01:23 +0300 Shlomi Fish wrote: >>> When running a simple and reduced Dancer 1 application which forks >>> and runs perldoc -f system , I am getting many zombie processes after >>> making requests. >> >> Forking a web app is not as simple as it first seems. > > Do you mean forking any web app or just Dancer apps? > >> You need to take >> an approach like the following (hopefully the comments will explain >> without me regurgitating here, but feel free to ask for clarification): >> >> https://github.com/ctrlo/GADS/blob/cb8c9478dee8eac1f40a44486634173bed8d666d/lib/GADS/Record.pm#L1068 >> > > I don't understand the code there in part because it uses too many custom APIs > like "guard"s and "try". Furthermore, the licence is the AGPLv3 which cannot > be > used inside my MIT Expat code. >
Shlomi, the point is the double fork - I suggest to disregard the code in the second else condition and put your code there :-). Regards Racke > If someone can provide a simple interface to spawn a background child process > in Dancer, I will appreciate it. Something like: > > use Dancer::Plugin::SpawnProc; > > # Inside the handler: > dancer_spawn_proc (sub { > # I am the child process. > system("mpv", 'no-exist.webm'); > exit(0); > }); > > ========== > > Regards, > > Shlomi Fish > >> The key point being that you need to fork both a child and a >> grand-child in order to correctly reap all the forked processes. >> >> Andy > > > -- Ecommerce and Linux consulting + Perl and web application programming. Debian and Sympa administration. _______________________________________________ dancer-users mailing list dancer-users@dancer.pm http://lists.preshweb.co.uk/mailman/listinfo/dancer-users