解決方式:
因不同的作業系統似乎有不同的解決方式,我將我實驗的過程介紹一下,首先從 Google 搜尋結果中可以看到 stackoverflow 上面有人提到與 IP 位址有關係,可以在 listen( ) 時指定 IP 位址解決這個問題,方法如下:
application.listen(8080, '0.0.0.0')
但這個方式仍然不能解決我的問題,因此我將所有程式從 Arch Linux 上複製至 Mac 上測試,竟沒有發生類似的問題。推測是 Arch Linux 上設定的問題,回頭再看錯誤訊息恍然大悟,訊息已經很明顯告知目前的 Protocol 並未支援某種 IP Address 格式。
因此,索性打開 /boot/cmdline.txt 發現目前的設定為 ipv6.disable=1,代表關閉對 IPv6 的支援。隨後,我將這個設定從 cmdline.txt 移除並重新啟動,接著測試並未再發生 [Errno 97] Address family not supported by protocol 的問題了。你可以用以下指令檢查 IPv6 是否開啟:
ifconfig
# 若開啟,你目前使用的網卡會有類似的資訊
...
inet6 xxxx::xxxx:2ff:xxxx:xxxx prefixlen 64 scopeid 0x20<link>
...
Environment :
・ Arch Linux
・ Python 2.7
Reference :
・ Tornado