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