X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/4da4cbfe27a576ae011430b2de205c74435e241b..b2dc01ad81e4b91c53e73a695edc5731a52b5aaa:/src/nominatim_db/clicmd/replication.py diff --git a/src/nominatim_db/clicmd/replication.py b/src/nominatim_db/clicmd/replication.py index f04c730f..ba4c7730 100644 --- a/src/nominatim_db/clicmd/replication.py +++ b/src/nominatim_db/clicmd/replication.py @@ -13,6 +13,7 @@ import datetime as dt import logging import socket import time +import asyncio from ..db import status from ..db.connection import connect @@ -116,14 +117,14 @@ class UpdateReplication: and update_interval < 86400: LOG.fatal("Update interval too low for download.geofabrik.de.\n" "Please check install documentation " - "(https://nominatim.org/release-docs/latest/admin/Import-and-Update#" + "(https://nominatim.org/release-docs/latest/admin/Update/#" "setting-up-the-update-process).") raise UsageError("Invalid replication update interval setting.") return update_interval - def _update(self, args: NominatimArgs) -> None: + async def _update(self, args: NominatimArgs) -> None: # pylint: disable=too-many-locals from ..tools import replication from ..indexer.indexer import Indexer @@ -161,7 +162,7 @@ class UpdateReplication: if state is not replication.UpdateState.NO_CHANGES and args.do_index: index_start = dt.datetime.now(dt.timezone.utc) - indexer.index_full(analyse=False) + await indexer.index_full(analyse=False) with connect(dsn) as conn: status.set_indexed(conn, True) @@ -172,8 +173,7 @@ class UpdateReplication: if state is replication.UpdateState.NO_CHANGES and \ args.catch_up or update_interval > 40*60: - while indexer.has_pending(): - indexer.index_full(analyse=False) + await indexer.index_full(analyse=False) if LOG.isEnabledFor(logging.WARNING): assert batchdate is not None @@ -196,5 +196,5 @@ class UpdateReplication: if args.check_for_updates: return self._check_for_updates(args) - self._update(args) + asyncio.run(self._update(args)) return 0