Get IP address in Google App Engine + Python

后端 未结 3 880
情歌与酒
情歌与酒 2020-12-25 12:18

I\'m looking for the equivalent of in Google App Engine and Python.

Thanks!

相关标签:
3条回答
  • 2020-12-25 12:23

    I slapped a quick and dirty example together based on the tutorial. It's been tested on my local appengine sdk. You should be able to adapt it to your needs:

    from google.appengine.ext import webapp
    from google.appengine.ext.webapp.util import run_wsgi_app
    from google.appengine.ext import db
    
    class Log(db.Model):
        access_time = db.DateTimeProperty(auto_now_add=True)
        ip_address = db.StringProperty()
    
    class MainPage(webapp.RequestHandler):
        def get(self):
    
            # obtain ip address
            ip = self.request.remote_addr
    
            # create a new Log record
            log = Log()
    
            # assign ip address to the ip_address field
            log.ip_address = ip
    
            # no need to set access_time because 
            # of the auto_now_add=True setting defined in the Log model
    
            # save to the datastore
            log.put()
    
            # output 
            self.response.headers['Content-Type'] = 'text/plain'
            self.response.out.write('Logged your visit from ip address %s' % ip)
    
    class LogPage(webapp.RequestHandler):
        def get(self):
            logs = Log.all()
    
            self.response.headers['Content-Type'] = 'text/plain'
            self.response.out.write('Ip addresses: ')
            for log in logs:
                self.response.out.write(log.ip_address + ',')
    
    application = webapp.WSGIApplication([('/', MainPage), ('/logs', LogPage)],
                                         debug=True)
    
    def main():
        run_wsgi_app(application)
    
    if __name__ == "__main__":
        main()
    
    0 讨论(0)
  • 2020-12-25 12:28

    Try with:

    os.environ["REMOTE_ADDR"]
    

    or with the Request Class variable:

    class MyRequestHandler(webapp.RequestHandler):
        def get(self):
            ip = self.request.remote_addr
    
    0 讨论(0)
  • 2020-12-25 12:37
    request.headers['X-AppEngine-User-IP']
    

    works for me, I use appengine python3.7 standard env.

    0 讨论(0)
提交回复
热议问题