Search code examples
djangotornado

How to allow Tornado Web Server serve only local requests (from Django)?


I am using Django for main project + Tornado for some async staff.

So, some Django apps requests Tornado via http.

And Tornado server is accessible by mywebsite.com:8888 in browser.

I want to throw 403 error or disable it at all for users if possible, and make it work only for local request from Django.

How can I do it? Can nginx help me? Or there is some cool feature in Tornado? Or some unix staff?

Big thx for advices!


Solution

  • If Django and Tornado are running on the same server, you can bind Tornado to 127.0.0.1 by call .listen() with appropriate parameter:

    import tornado.ioloop
    import tornado.web
    
    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            self.write("Hello, world")
    
    if __name__ == "__main__":
        application = tornado.web.Application([
            (r"/", MainHandler),
        ])
        application.listen(8888, address='127.0.0.1')
        tornado.ioloop.IOLoop.current().start()