I wrote a python script to monitor a log file on a CentOS server for a specific value and send an email when it finds it.  It runs as a cron every 5 minutes.
My question is what is the best way to put this script to sleep after it has sent the first email.  I don't want it to be sending emails every 5 mins, but it needs to wake up and check the log again after an hour or so.  This is assuming the problem can be fixed in under an hour.  The people who are receiving the email don't have shell access to disable the cron.
I thought about sleep but I'm not sure if cron will try to run the script again if another process is active (sleeping).
cron will absolutely  run the script again.  You need to think this through a little more carefully than just "sleep" and "email every 10 minutes."
You need to write out your use cases.

System sends message and user does something.
System sends message and user does nothing.  Why email the user again?  What does 2 emails do that 1 email didn't do?  Perhaps you should SMS or email someone else.  

How does the user register that something was done?  How will they cancel or stop this cycle of messages?
What if something is found in the log, an email is sent and then (before the sleep finishes) the thing is found again in the log.  Is that a second email?  It is two incidents.  Or is that one email with two incidents?
How to sleep a python script running as a cronjob?