2017-09-02 3 views
0

Je suis en train de migrer de OpenShift 2 à 3 et je suis coincé quelques lignes.liaison IP dans OpenShift 3 Python

Dans l'exécution d'une pyramide python3 avec le serveur Serveuse comme copié à partir d'un Openshift Pyramidstarter template. Le problème provient de différentes clés dans 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) 

Cela me donne l'erreur suivante

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 

J'ai essayé quelques autres options. Les clés os.environ sont les suivantes: ['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']. Exception: J'ai essayé de manière irréversible de lier à localhost (127.0.0.1) et j'ai obtenu l'autorisation refusée.

Répondre

1

Il suffit de le lier directement à 0.0.0.0.

Par exemple:

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

Cela ne permet pas de répondre à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire sous son article. - [À revoir] (/ review/low-quality-posts/17218916) –

+0

Oui, cela fournit une réponse à la question. Will est correct en ce que le serveur WSGI lors de l'exécution doit se lier à une valeur d'hôte de '' 0.0.0.0''. C'est pour s'assurer qu'il écoute sur toutes les interfaces réseau et peut donc affecter les demandes provenant de l'extérieur de l'hôte. Ainsi devrait utiliser '' serve (app, host = '0.0.0.0', port = 8080, threads = 50) ''. –

+0

Hier, avec 0.0.0.0, il a réussi à s'initialiser, mais n'a pas servi sur internet (construit et déployé correctement). Cependant, aujourd'hui ça marche bien même si je n'ai absolument rien fait. Donc, je ne suis pas sûr si cela a résolu le problème ou si quelque chose s'est passé dans les coulisses. Je suis plutôt frustré par la transition OpenShift 2> 3 mal annotée, donc je pense que je préfère passer à AWS. –