i coworker wrote a stand-alone (not web2py) push server for a project - but that's cause we are running our web2py on GAE and you can't create persistent connects to the APNS.
i'm not sure how to keep the connection open between requests in a web2py instance. i suspect you'd have to have a long running process that collects tasks from a queue to send notifications. (though if you only send 1 push per hour it's probably ok to make a new connection each time).