IOError and Try Again to loop the loop.
The Danny Bos
dannybos at gmail.com
Sun Jul 11 23:13:57 EDT 2010
Thanks gang,
I'm gonna paste what I've put together, doesn't seem right. Am I way
off?
Here's my code.
- It goes through a table Item
- Matches that Item ID to an API call
- Grabs the data, saves it and creates the thumbnail
- It dies due to Timeouts and Other baloney, all silly, nothing code
based.
items = Item.objects.all().filter(cover='').order_by('-reference_id')
for item in items:
url = "http://someaddress.org/books/?issue=%s" % item.reference_id
url_array = []
url_open = urllib.urlopen(url)
url_read = url_open.read().decode('utf-8')
try:
url_data = simplejson.loads(url_read)
url_array.append(url_data)
for detail in url_array:
if detail['artworkUrl']:
cover_url = detail['artworkUrl'].replace(' ','%20')
cover_open = urllib.urlretrieve(cover_url)
cover_name = os.path.split(cover_url)[1]
item.cover.save(cover_name, File(open(cover_open[0])),
save=True) ## Create and save Thumbnail
print "Cover - %s: %s" % (item.number, url)
else:
print "Missing - %s: %s" % (item.number, url)
except ValueError:
print "Error Processing record: %s: %s" % (item.reference_id, url)
pass
except IOError:
print "IOError; Retrying..."
pass
print "Done"
On Jul 12, 12:33 pm, MRAB <pyt... at mrabarnett.plus.com> wrote:
> The Danny Bos wrote:
> > Heya,
>
> > I'm running a py script that simply grabs an image, creates a
> > thumbnail and uploads it to s3. I'm simply logging into ssh and
> > running the script through Terminal. It works fine, but gives me an
> > IOError every now and then.
>
> > I was wondering if I can catch this error and just get the script to
> > start again?
> > I mean, in Terminal it dies anyway, so I have to start it again by
> > hand, which is a pain as it dies so sporadically. Can I automate this
> > error, catch it and just get it to restart the loop?
>
> > Thanks for your time and energy,
>
> Exceptions can be caught. You could do something like this:
>
> while True:
> try:
> do_something()
> break
> except IOError:
> pass
More information about the Python-list
mailing list