It seems you want keep your daemon running by cron. If yes, it isn't good idea.
Why this flock sometimes fails? You use /tmp directory. Maybe another process removes old files. When it is done, flock still keeps flocked but deleted files. On another 10min cron round another flock instance doesn't see this file, creates another and run unneeded duplicate.
Resolution, move your lock file into /var/run directory or elsewhere.
If your daemon often ends working, consider exit codes. Assign some exit code for signal INT15. Run your daemon one from some 'infinite' loop. This loop should detect, your daemon is killed by sig15 or other. when other, do simply another loop. if 15, leave loop and end your daemon live.
you can use runsv package, available under debian and redhat. it work completly different to cron. it run your script/daemon executable and waits it finishes or crash. when it do, restart it. Then you don't have to pay attention for running twice your code, and you can end gaming with cron, because cron isn't for that work.