On Jun 12, 2013, at 3:58 PM, Hans Hübner <hans.hueb...@gmail.com> wrote:
> This is not Drakma specific:
> 
> (defun try-request-from-multiple-urls (&rest urls)
>   (loop
>     (with-simple-restart (try-next "Try next URL")
>       (handler-case
>           (let ((url (first urls)))
>             (format t "requesting ~A~%" url)
>             (return (drakma:http-request url)))
>         (usocket:timeout-error ()
>           (setf urls (rest urls))
>           (unless urls
>             (format t "no more urls, returning~%")
>             (return))
>           (format t "timeout, trying next url~%")
>           (invoke-restart 'try-next))))))
> 
> Tune as desired.  If you want to have the last timeout error percolate to the 
> caller, you'll want handler-bind instead.

        Thanks, Hans (and Drew C).  I figured out my problem on the train home 
(debugging by public embarrassment), but your use of with-simple-restart makes 
the code more understandable so I'll incorporate that.

        Sorry for being too quick to post.

Patrick



Reply via email to