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.

-Hans


On Wed, Jun 12, 2013 at 9:42 PM, Patrick May <patrick.may@mac.com> wrote:
        I have a list of IP addresses to poll and want to catch the USOCKET:TIMEOUT-ERROR from Drakma when a machine isn't available, log a message, and continue on mapping over the list.  Does anyone have an example of how to do this?

Thanks,

Patrick