aiohttp

Le problème exposé dans ce sujet a été résolu.

Bonjour

Sur mon.site:5000 mon navigateur dit : site inaccessible

from aiohttp import web
routes = web.RouteTableDef()

@routes.get("/test")
async def websocket(request):
    name = request.match_info.get('name', "Anonymous")
    text = "Hello, " + name
    return web.Response(text=text)

app = web.Application()
app.add_routes(routes)
web.run_app(app, port=5000)

J’exécute mon code sur un serveur Debian avec apache installer sur le port 80.

Est un problème de code ou de serveur ?

+0 -0

Salut,

Tu as bien mon.site qui pointe sur la machine en question ?

Si oui, c’est probablement que le port n’est pas ouvert ou que le programme n’écoute pas sur le bon nom d’hôte (ça se règle peut-être avec le paramètre hostde run_app).

Merci

C’était bien un problème de paramètre host

Par contre sa fonctionne avec mon ip serveur http mais pas avec mon ip https ou mon nom de domaine.

web.run_app(app, host='00.00.00.00',port=5000) ip http OK

web.run_app(app, host='01.01.01.01',port=5000) ip https bloqué

web.run_app(app, host='mon.site',port=5000) Nom de domain qui pointe vers ip https

OSError: [Errno 99] error while attempting to bind on address ('01.01.01.01', 5000): 
cannot assign requested address
+0 -0

Ouais, je crois qu’il s’agit normalement d’une adresse qui doit être connue par la machine elle-même correspondant à une interface réseau, pas une IP publique d’un routeur ou un nom de domaine.

Mais tu dois pouvoir préciser host='*' pour écouter sur toutes ces interfaces, et donc probablement résoudre ton problème.

En réalité, on écoute sur un couple (adresse, port) et non pas seulement sur un port comme on a tendance à le croire.

Ton serveur peut avoir plusieurs interfaces réseaux, et chacune des ces interfaces peuvent se voir attribuer une ou plusieurs adresses IP.

Tout d’abord, 01.01.01.01 c’est la même chose que 1.1.1.1.

  • Quand tu écoutes sur (1.1.1.1, 5000), tu essaies donc d’écouter sur une adresse IP qui n’est pas assignée sur l’une des interfaces de ton serveur, d’où l’erreur que tu obtiens. *

  • Quand tu écoutes sur ('mon.site', 5000), tu écoutes sur l’adresse correspondante à la résolution de mon.site. (on ne peut en dire plus sans savoir de quelle adresse il s’agit)

  • Quand tu écoutes sur (0.0.0.0, 5000) (ou (::, 5000) en IPv6), c’est un cas particulier : tu indiques que tu veux écouter sur toutes les interfaces et leurs adresses associées du serveur. Le service sera donc accessible via toutes les adresses qu’il gère, par le port 5000.

* : l’adresse 1.1.1.1 est publique et est assignée à Cloudflare, en supposant que tu ne sois pas sur un serveur de Cloudflare, il est donc normal que tu n’aies pas cette adresse IP assignée à l’une des tes interfaces. Par conséquent, tu ne peux pas écouter dessus.

'0.0.0.0' n’est pas une adresse IP validen, elle a un sens particulier dans certain contexte. Dans le contexte d’un serveur elle correspond à toutes les adresses IPv4. '*' ça ne me dit rien. La doc dit que '0.0.0.0' est la valeur par défaut (et la valeur utilisée si host=None)

+0 -0

J’ai mis des ip fictive d’exemple de même que mon.site n’est pas mon domaine c’est un exemple. Désolé pour la confusion.

En faite j’ai un serveur chez OVH avec une ip http. Et un une gateway ssl chez OVH avec une autre ip pour le HTTPS sur mon nom de domaine.

+0 -0

En faite j’ai un serveur chez OVH avec une ip http. Et un une gateway ssl chez OVH avec une autre ip pour le HTTPS sur mon nom de domaine.

Nozziak

Ça change tout, en effet. Je suppose que la gateway d’OVH est configurable pour taper sur ton serveur derrière ? Quels sont les éléments de configuration qu’ils demandent ?

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte