=head1 NAME Coro::LWP - make LWP non-blocking - as much as possible =head1 SYNOPSIS use Coro::LWP; # afterwards LWP should not block =head1 ALTERNATIVES Over the years, a number of less-invasive alternatives have popped up, which you might find more acceptable than this rather invasive and fragile module. All of them only support HTTP (and sometimes HTTPS). =over 4 =item L Works fine without Coro. Requires using a very different API than LWP. Probably the best choice I you can do with a completely different event-based API. =item L Makes LWP use L. Does not make LWP event-based, but allows Coro threads to schedule unimpeded through its AnyEvent integration. Let's you use the LWP API normally. =item L Basically the same as above, distinction unclear. :) =item L A different user agent implementation, not completely transparent to users, requires Coro. =back =head1 DESCRIPTION This module is an L user, you need to make sure that you use and run a supported event loop. This module tries to make L non-blocking with respect to other coroutines as much as possible, and with whatever means it takes. LWP really tries very hard to be blocking (and relies on a lot of undocumented functionality in IO::Socket), so this module had to be very invasive and must be loaded very early to take the proper effect. Note that the module L might offer an alternative to the full L that is designed to be non-blocking. Here is what it currently does (future versions of LWP might require different tricks): =over 4 =item It loads Coro::Select, overwriting the perl C