使用Tornado确定请求是通过套接字还是URL来实现的

时间:2016-08-02 16:40:28

标签: python sockets tornado

我有一个Tornado服务器,可以侦听地址/端口和套接字。我大致如此创建服务器(严重剥离):

from tornado import httpserver
from tornado.netutil import bind_unix_socket

server = httpserver.HTTPserver(
    request_callback=some_callback,
    io_loop=some_loop,
)
unix_socket = bind_unix_socket("mysock.sock")
server.add_socket(unix_socket)
server.listen(address="some_host", port=1234)

我希望能够区分通过套接字收到请求的时间,例如:

curl -XGET --unix-socket mysock.sock http:/ping

相反:

curl http://some_address:1234/ping

我查看了收到请求后Tornado使用的HTTPServerRequest,但我不确定说出两者之间区别的最佳方法。我可以查看remote_ip,看看它是否来自localhost,但我不认为这是理想的。

1 个答案:

答案 0 :(得分:1)

localhost是一个具有众所周知的IP地址的互联网域名界面。它与没有IP地址的unix域套接字不同。

简要介绍一下该来源,建议{i}插槽收到的连接remote_ip属性将包含'0.0.0.0'

(对于通过localhost连接收到的连接,remote_ip可能是'127.0.0.1'。)