Dynamic IP Notification Using Google App Engine
Lint

PEP 8 recommends two blank lines around class definitions.  Indentation should be consistently 4 spaces — an important convention in Python, where indentation matters a lot.

log = Log() is pointless.

Database

A more Pythonic way to write this…


logs = Log.all()
is_new = True
for log in logs:
        if ip == log: is_new = False



… would be is_new = ip not in Log.all().

But your code wouldn't even work, since an IP address would never be equal to a db.Model object!

It also doesn't scale well, since it doesn't take advantage of the datastore's capabilities.  You should be using a query like this:

Logs.all().filter('ip_address =', ip).run(limit=1)