# TimeOut ES 6.1.1

**URL:** <https://discuss.elastic.co/t/timeout-es-6-1-1/129417>\
**Category:** Discussions en français\
**Created:** [April 25, 2018, 6:59am UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417 "2018-04-25T06:59:00Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![RSTMAN](https://avatars.discourse-cdn.com/v4/letter/r/bb73d2/32.png) [@RSTMAN](https://discuss.elastic.co/u/RSTMAN)\
**Post date:** [April 25, 2018, 6:59am UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/1 "2018-04-25T06:59:01Z")

</div>

bonjour,

j'utilise elasticsearch 6.1.1 dans un des projets sur lesquels je travaille.  
j'ai ES sur AZURE, le soucis que j'ai c'est que si je fais pas de requête à es pendant un moment (je n'ai pas le temps exacte, quelques minutes) j'ai un timeout systimatiquement, par contre après le premier il répond sans problème, quelque ms.  
Est-ce que c'est un comportement normal ?  
pour info, j'utilse elasticsearch-py (python) pour appeler ES  
merci d'avance.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [April 25, 2018, 7:26am UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/2 "2018-04-25T07:26:31Z")

</div>

Je ne connais pas la lib python mais peut-être met-il du temps pour initialiser sa première connexion, genre pour vérifier quels noeuds répondent ?

Pas certain néanmoins.

---

<div class="post-metadata">

**Author:** ![RSTMAN](https://avatars.discourse-cdn.com/v4/letter/r/bb73d2/32.png) [@RSTMAN](https://discuss.elastic.co/u/RSTMAN)\
**Post date:** [April 25, 2018, 7:46am UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/3 "2018-04-25T07:46:35Z")

</div>

Bonjour,

Merci pour votre réponse, je voulais être sûr que il n'y a pas de paramètre à changer côté ES.  
si je comprends bien il n'y a pas moyen d'eviter ce soucis?  
peut-être mettre en place une tâche que le reveille, ce n'ai pas propre !

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [April 25, 2018, 10:18am UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/4 "2018-04-25T10:18:38Z")

</div>

Non, je pense plus à un pb côté client.

Tu peux tenter quelque chose.

Lance:

```auto
GET /_search

```

Puis attend le temps nécessaire et relance à nouveau la même commande.  
Regarde si c'est long ou rapide.

---

<div class="post-metadata">

**Author:** ![RSTMAN](https://avatars.discourse-cdn.com/v4/letter/r/bb73d2/32.png) [@RSTMAN](https://discuss.elastic.co/u/RSTMAN)\
**Post date:** [April 25, 2018, 10:29am UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/5 "2018-04-25T10:29:26Z")

</div>

merci, je vais faire le test quand l'import des données est fait.  
d'ici un 1/2h !

---

<div class="post-metadata">

**Author:** ![gabriel\_tessier](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gabriel_tessier/32/27911_2.png) [@gabriel\_tessier](https://discuss.elastic.co/u/gabriel_tessier)\
**Post date:** [April 26, 2018, 5:05am UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/6 "2018-04-26T05:05:15Z")

</div>

J'utilise aussi la lib elasticsearch-py depuis un bout de temps et j'ai jamais eu de problemes similaire ou qui s'en approche. (J'ai eu plein de problemes mais pas celui-la).  
Si les GET \_search repondent rapidement c'est que le problem est dans ta creation de connexion.  
Tu peux partager ton code quand et comment tu fais ta connexion?

---

<div class="post-metadata">

**Author:** ![RSTMAN](https://avatars.discourse-cdn.com/v4/letter/r/bb73d2/32.png) [@RSTMAN](https://discuss.elastic.co/u/RSTMAN)\
**Post date:** [April 26, 2018, 6:31am UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/7 "2018-04-26T06:31:07Z")

</div>

Bonjour,  
je n'ai pas encore fais de test avec "GET \_search", je n'ai pas eu le temps de le faire, mais ma connexion est très simple, j'ai créer une classe dans mon projet qui gère tout ce qui est en lien avec ES

```
import Elasticsearch 

class ElasticSearch:
    def __init__ (self, hosts, port=9200):
        self.client = Elasticsearch(hosts, port=port)

    def searh(self, index_name, q):
        search = Search(using=self.client, index=index_name)
        query_search = search.suggest('my_suggest', q,....}).source(False)
        return query_search.execute()
```

---

<div class="post-metadata">

**Author:** ![RSTMAN](https://avatars.discourse-cdn.com/v4/letter/r/bb73d2/32.png) [@RSTMAN](https://discuss.elastic.co/u/RSTMAN)\
**Post date:** [April 26, 2018, 7:07am UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/8 "2018-04-26T07:07:41Z")

</div>

avec "GET \_search" nien d'anormal, ES répond sans soucis.

---

<div class="post-metadata">

**Author:** ![gabriel\_tessier](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gabriel_tessier/32/27911_2.png) [@gabriel\_tessier](https://discuss.elastic.co/u/gabriel_tessier)\
**Post date:** [April 26, 2018, 7:37am UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/9 "2018-04-26T07:37:40Z")

</div>

Si pas de soucis avec GET c'est que c'est forcement a cause de la facon dont tu fais ta connexion. Quel framework tu utilises?

---

<div class="post-metadata">

**Author:** ![RSTMAN](https://avatars.discourse-cdn.com/v4/letter/r/bb73d2/32.png) [@RSTMAN](https://discuss.elastic.co/u/RSTMAN)\
**Post date:** [April 26, 2018, 7:57am UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/10 "2018-04-26T07:57:51Z")

</div>

merci pour les réponses.  
c'est du flask

---

<div class="post-metadata">

**Author:** ![gabriel\_tessier](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gabriel_tessier/32/27911_2.png) [@gabriel\_tessier](https://discuss.elastic.co/u/gabriel_tessier)\
**Post date:** [April 26, 2018, 2:01pm UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/11 "2018-04-26T14:01:25Z")

</div>

Nous on a mis ca dans le fichier extensions.py on utilise un boilerplate:  
Boilerplate source: [https://github.com/sloria/cookiecutter-flask](https://github.com/sloria/cookiecutter-flask)  
C'est avec elastic 5.x donc y'a peut etre des petites differences.

```
# -*- coding: utf-8 -*-
"""Extensions module. Each extension is initialized in the app factory located in app.py."""

from elasticsearch import Elasticsearch

class Elastic(object):
  """A thin wrapper around elasticsearch.Elasticsearch() Because there's no init_app.

  Original code : http://pydoc.net/Python/Flask-Elastic/0.1/flask_elastic/
  """
  def __init__ (self, app=None):
    if app is not None:
      self.init_app(app)

  def init_app(self, app):
    ELASTIC_SERVER = ('127.0.0.1', )
    ELASTIC_CONFIG = {
      'timeout': 10,
      'retry_on_timeout': True,
      'sniff_on_start': True,
      'sniff_on_connection_fail': True,
      'sniffer_timeout': 60,
      'sniff_timeout': 10,
    }
    app.extensions['elastic'] = Elasticsearch(ELASTIC_SERVER, **ELASTIC_CONFIG)

  def __getattr__ (self, item):
    from flask import current_app
    if 'elastic' not in current_app.extensions.keys():
      raise Exception(
        'not initialised, did you forget to call init_app?')
    return getattr(current_app.extensions['elastic'], item)

es = Elastic()

```

Apres tu peux appeler l'extension :

```
from .extensions import es

def search(self, index_name, q):
    return es.search(index=index_name, doc_type='_doc', body=q)

```

C'est extrait d'un grand projet j'ai mis que le minimum.  
L'important c'est que la connexion ne se fasse qu'une fois quand tu demarre ton projet flask run ou python main.py.  
Apres tu peux jouer avec les options dans ELASTIC\_CONFIG.

---

<div class="post-metadata">

**Author:** ![RSTMAN](https://avatars.discourse-cdn.com/v4/letter/r/bb73d2/32.png) [@RSTMAN](https://discuss.elastic.co/u/RSTMAN)\
**Post date:** [April 26, 2018, 2:15pm UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/12 "2018-04-26T14:15:29Z")

</div>

OK merci, je vais voir.  
je vais jouer sur ELASTIC\_CONFIG, concernant l'instanciation de ES, je le fais aussi une fois au démarage de l'aplication.  
merci pour les réponses

---

<div class="post-metadata">

**Author:** ![RSTMAN](https://avatars.discourse-cdn.com/v4/letter/r/bb73d2/32.png) [@RSTMAN](https://discuss.elastic.co/u/RSTMAN)\
**Post date:** [May 15, 2018, 2:52pm UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/13 "2018-05-15T14:52:43Z")

</div>

Bonjour,

bizzard, toujours le problème de timeout et ne peux le changer de plus 10, je pense que ça va faire pareil.

```auto
Traceback (most recent call last):
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/flask/app.py", line 1997, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/flask/app.py", line 1985, in wsgi_app
    response = self.handle_exception(e)
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/flask_restful/ __init__.py", line 273, in error_router
    return original_handler(e)
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/flask/app.py", line 1540, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/flask/_compat.py", line 32, in reraise
    raise value.with_traceback(tb)
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/flask/app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/flask/app.py", line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/flask_restful/ __init__.py", line 273, in error_router
    return original_handler(e)
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/flask/app.py", line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/flask/_compat.py", line 32, in reraise
    raise value.with_traceback(tb)
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/flask/app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/flask/app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/flask_restful/ __init__.py", line 480, in wrapper
    resp = resource(*args, **kwargs)
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/flask/views.py", line 84, in view
    return self.dispatch_request(*args, **kwargs)
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/flask_restful/ __init__.py", line 595, in dispatch_request
    resp = meth(*args, **kwargs)
  File "/home/myhome/app_name/app_name/app_name/serializer/ __init__.py", line 13, in wrapper
    resp = f(*args, **kwargs)
  File "/home/myhome/app_name/app_name/app_name/decorators.py", line 24, in wrapper
    return f(*args, **kwargs)
  File "/home/myhome/app_name/app_name/app_name/interfaces/filters.py", line 36, in get
    resp = current_elasticsearch.regions()
  File "/home/myhome/app_name/app_name/app_name/search/elastic_search.py", line 41, in regions
    resp_count = self.client.count(index="region")
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/elasticsearch/client/utils.py", line 76, in _wrapped
    return func(*args, params=params, **kwargs)
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/elasticsearch/client/ __init__.py", line 1088, in count
    doc_type, '_count'), params=params, body=body)
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/elasticsearch/transport.py", line 314, in perform_request
    status, headers_response, data = connection.perform_request(method, url, params, body, headers=headers, ignore=ignore, timeout=timeout)
  File "/home/myhome/app_name/venv/lib/python3.5/site-packages/elasticsearch/connection/http_urllib3.py", line 157, in perform_request
    raise ConnectionTimeout('TIMEOUT', str(e), e)
elasticsearch.exceptions.ConnectionTimeout: ConnectionTimeout caused by - ReadTimeoutError(HTTPConnectionPool(host='xx.xxx.xxx.xx', port=9200): Read timed out. (read timeout=10))

```

---

<div class="post-metadata">

**Author:** ![gabriel\_tessier](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gabriel_tessier/32/27911_2.png) [@gabriel\_tessier](https://discuss.elastic.co/u/gabriel_tessier)\
**Post date:** [May 25, 2018, 8:20am UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/14 "2018-05-25T08:20:23Z")

</div>

Si ton timeout ne change pas dans ton backtrace alors que t'as modifié le code, y'a de grandes chances que ton code n'est pas appelé.  
Ajout des print ou utilise pdb. On utilise ce code depuis des lustres (depuis elastic 0.9...) sur differents projets et ca fonctionne bien.

---

<div class="post-metadata">

**Author:** ![RSTMAN](https://avatars.discourse-cdn.com/v4/letter/r/bb73d2/32.png) [@RSTMAN](https://discuss.elastic.co/u/RSTMAN)\
**Post date:** [May 27, 2018, 12:42pm UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/15 "2018-05-27T12:42:30Z")

</div>

Bonjour,

j'ai mis un backtrace avec 10 mais ça le fait aussi avec 60, ce n'est pas normal de mettre un Timeout de 60.  
ça le fait qu'a la premiere requête si on laisse ES tranquille pendent un moment (je n'ai mésuré ce temps).  
j'utilise le moteur ES: 6.1.1 sur azure  
le client python:  
elasticsearch==6.1.1  
elasticsearch-dsl==6.1.0

---

<div class="post-metadata">

**Author:** ![gabriel\_tessier](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gabriel_tessier/32/27911_2.png) [@gabriel\_tessier](https://discuss.elastic.co/u/gabriel_tessier)\
**Post date:** [May 28, 2018, 3:45am UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/16 "2018-05-28T03:45:27Z")

</div>

A lire ton backtrace et le code que t'as posté plus haut tu créer une instance de connection a chaque requete...  
Il serait peut etre plus simple si tu utilise un plugin comme celui-la: [https://github.com/chiangf/Flask-Elasticsearch](https://github.com/chiangf/Flask-Elasticsearch) pour gerer la connexion.

---

<div class="post-metadata">

**Author:** ![RSTMAN](https://avatars.discourse-cdn.com/v4/letter/r/bb73d2/32.png) [@RSTMAN](https://discuss.elastic.co/u/RSTMAN)\
**Post date:** [May 28, 2018, 9:57am UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/17 "2018-05-28T09:57:23Z")

</div>

Bonjour,

je vais faire pareil, comme dans le pluging et voir ce que ça donne.  
merci

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [June 25, 2018, 9:57am UTC](https://discuss.elastic.co/t/timeout-es-6-1-1/129417/18 "2018-06-25T09:57:26Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
