2017-09-02 77 views
0

結合我試圖從遷移Openshift 2〜3個,我在堅持了幾行。IP在Openshift 3 Python的

在運行Python3金字塔女服務員服務器作爲從Openshift Pyramidstarter template複製。 問題來自於os.environ中的不同密鑰。

from waitress import serve 
print('Binding to '+os.environ['HOME_SERVICE_HOST']) #fomerly OPENSHIFT_PYTHON_IP 
print("Starting Waitress.") 
serve(app, host=os.environ['HOME_SERVICE_HOST'], port=8080, threads=50) 

這給了我下面的錯誤

Binding to 172.30.224.51 
Starting Waitress. 
Traceback (most recent call last): 
    File "app.py", line 34, in <module> 
    serve(app, host=ip, port=port, threads=50) 
    File "/opt/app-root/lib/python3.5/site-packages/waitress-1.0.2-py3.5.egg/waitress/__init__.py", line 11, in serve 
    server = _server(app, **kw) 
    File "/opt/app-root/lib/python3.5/site-packages/waitress-1.0.2-py3.5.egg/waitress/server.py", line 85, in create_server 
    sockinfo=sockinfo) 
    File "/opt/app-root/lib/python3.5/site-packages/waitress-1.0.2-py3.5.egg/waitress/server.py", line 182, in __init__ 
    self.bind_server_socket() 
    File "/opt/app-root/lib/python3.5/site-packages/waitress-1.0.2-py3.5.egg/waitress/server.py", line 294, in bind_server_socket 
    self.bind(sockaddr) 
    File "/opt/rh/rh-python35/root/usr/lib64/python3.5/asyncore.py", line 329, in bind 
    return self.socket.bind(addr) 
OSError: [Errno 99] Cannot assign requested address 

我已經嘗試了一些其他的選項。 os.environ密鑰如下:['KUBERNETES_PORT_53_UDP_PORT', 'PIP_NO_CACHE_DIR', 'KUBERNETES_PORT_53_TCP_PORT', 'STI_SCRIPTS_PATH', 'PYTHONIOENCODING', 'X_SCLS', 'KUBERNETES_PORT_443_TCP_PROTO', 'HOME_SERVICE_PORT', 'HOME_SERVICE_HOST', 'KUBERNETES_PORT_53_TCP_ADDR', 'LANG', 'MANPATH', 'KUBERNETES_PORT_53_UDP', 'KUBERNETES_PORT_443_TCP', 'HOME_SERVICE_PORT_8080_TCP', 'PWD', 'KUBERNETES_PORT', 'KUBERNETES_SERVICE_PORT_HTTPS', 'VIRTUAL_ENV', 'PYTHON_VERSION', 'KUBERNETES_PORT_443_TCP_ADDR', 'HOME_PORT_8080_TCP_PORT', 'HOME_PORT', 'HOME_PORT_8080_TCP_ADDR', 'HOME_PORT_8080_TCP_PROTO', 'OPENSHIFT_BUILD_SOURCE', 'KUBERNETES_PORT_53_TCP_PROTO', 'KUBERNETES_PORT_53_UDP_PROTO', 'LD_PRELOAD', 'DESCRIPTION', 'LIBRARY_PATH', 'OPENSHIFT_BUILD_NAMESPACE', 'KUBERNETES_PORT_53_TCP', 'container', 'PATH', 'KUBERNETES_SERVICE_HOST', 'KUBERNETES_SERVICE_PORT_DNS_TCP', 'KUBERNETES_PORT_53_UDP_ADDR', 'KUBERNETES_SERVICE_PORT', 'PYTHONUNBUFFERED', 'KUBERNETES_PORT_443_TCP_PORT', 'OPENSHIFT_BUILD_COMMIT', 'NSS_WRAPPER_PASSWD', 'HOME_PORT_8080_TCP', 'KUBERNETES_SERVICE_PORT_DNS', 'SUMMARY', 'STI_SCRIPTS_URL', 'NSS_WRAPPER_GROUP', 'PKG_CONFIG_PATH', 'SHLVL', 'OPENSHIFT_BUILD_REFERENCE', 'HOME', 'HOSTNAME', 'LD_LIBRARY_PATH', 'LC_ALL', 'XDG_DATA_DIRS', 'OPENSHIFT_BUILD_NAME']

例外:我拼命嘗試綁定到本地主機(127.0.0.1),並且我拒絕了權限。

回答

1

只需將其直接綁定到0.0.0.0即可。

例如:

serve(app, host='0.0.0.0', port=8080, threads=50) 
+0

這並不提供答案的問題。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/17218916) –

+0

是的,它提供了一個問題的答案。威爾是正確的,因爲WSGI服務器在運行時應該綁定到「0.0.0.0」的主機值。這是爲了確保它監聽所有的網絡接口,因此可以影響來自主機外部的請求。因此應該使用''serve(app,host ='0.0.0.0',port = 8080,threads = 50)''。 –

+0

昨天,0.0.0.0它設法初始化,但沒有通過互聯網服務(構建和正確部署)。然而,即使我什麼也沒做,今天它運作良好。所以我不確定這是否解決了它或幕後發生了什麼。 對於註釋不當的Openshift 2> 3過渡我感到沮喪,所以我認爲我最好過渡到AWS。 –