diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..9d88fd34ba65887a82895cf189e8159a81c8d79c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +.git +.gitignore +.example.env +/venv +/src/__pycache__ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 2f292652c91f5d2f968f47745016c760b774697a..4d4ec75560d28a0f2f02ee606da544b5f1adcd5f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,4 +9,4 @@ RUN pip install --no-cache-dir -r requirements.txt COPY src . -CMD [ "flask", "run" ] \ No newline at end of file +CMD [ "flask", "run" ] diff --git a/src/indexer.py b/src/indexer.py index fe4501ed7a5476eb74e1d16737b37971400a2005..bc3a5b2797a1a9cb8840771d9dd719edefbb9fe0 100644 --- a/src/indexer.py +++ b/src/indexer.py @@ -1,10 +1,22 @@ from elasticsearch import Elasticsearch +from time import sleep index_name = "blog" doc_type = "post" def connect_elastic(host='localhost', port=9200): - return Elasticsearch([{'host': host, 'port': port}]) + + MAXIMUM_ATTEMPS = 12 + connection = Elasticsearch([{'host': host, 'port': port}]) + for _ in range(MAXIMUM_ATTEMPS): + is_connected = connection.ping() + if not is_connected: + sleep(5) + continue + + return connection + + raise TimeoutError(f"Could not connect to elasticsearch server at {host}:{port}.") def refresh_index(es): if es.indices.exists(index=index_name): diff --git a/src/main.py b/src/main.py index c5678000555bc13f8e07de5d3ce6cebc12ab518c..eb8dd1089e09b4541a716b846095ba4f1475a7d0 100644 --- a/src/main.py +++ b/src/main.py @@ -22,6 +22,8 @@ if __name__ == "__main__": es_host = os.getenv('ES_HOST', 'localhost') es_port = os.getenv('ES_PORT', 9200) + print(f"Connecting to {es_host}:{es_port}") + es = indexer.connect_elastic(es_host, es_port) print("ElasticSearch connection established")