Ignoring timeouts in Drakma
Patrick May
patrick.may at mac.com
Wed Jun 12 22:23:36 UTC 2013
On Jun 12, 2013, at 3:58 PM, Hans Hübner <hans.huebner at 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
More information about the Drakma-devel
mailing list