[Dancer-users] do something after sending response
tylerdu at bounced.me
Sat Aug 13 20:25:38 CEST 2011
On 12.08.2011 11:52, Alex Knowles wrote:
> On Thu, 2011-08-11 at 17:54 +0100, Nick Knutov wrote:
>> Hello all,
>> is it possible to run some code after sending response to upstream [and
>> closing socket] with Dancer?
>> For example: I want to get request, send response and after closing
>> socket to back-end do some job with big timeouts: write logs, send
>> notifications via emails, etc.
> Further to all the other answers. We use TheSchwartz quite heavily in
> our main (non dancer) environment. It's a little hairy, but a job queue
> (not necessarily TheSchwartz) may well be what you want...
I used a similar approach, to solve the same problem as OP, but I used
beanstalk job queue. http://kr.github.com/beanstalkd/
It worked great, it's very fast and efficient, there are client
libraries for all popular languages (including Perl, of course).
It solves the problem of forking, but you still have to serialize data
you want to send to your workers (processes doing stuff for you). What I
liked is multiple tubes (in beanstalk nomenclature) - you can have one
tube for logging, and another one for sending emails etc... And also
persistance, beanstalkd (written in C, so very fast) can log job
requests to file, so you won't lose any, even if you reboot server!
Beanstalk is also very simple and easy to use, took me no longer than an
hour to install it, configure it, modify original (PHP) code to dispatch
requests to beanstalk, and write a simple worker (Perl) to just log some
stuff to database. Logging AFTER the response has already been sent to
web visitor. Yay! :)
More information about the Dancer-users