Supervisor y Sistema¶
Celery¶
Rabbitmq y Redis¶
Cómo: Carga asíncrona a través de API¶
En geonode es posible cargar recursos a través de API de forma asíncrona/sincrónica.
Aquí está disponible un ejemplo completo de carga a través de API https://github.com/GeoNode/geonode/blob/582d6efda74adb8042d1d897004bbf764e6e0285/geonode/upload/api/tests.py#L416
Paso 1¶
Cree una sesión de cliente común, esto es fundamental debido a que geonode verificará la sesión de solicitud.Por ejemplo con las solicitudes haremos algo como:
import requests
client = requests.session()
Nota: en Django esta parte ya está administrada
Paso 2¶
Llame al punto final api/v2/uploads/upload en PUT (es un punto final de formulario-datos) especificando en archivos un diccionario con los nombres y los archivos que queremos cargar y un payload de datos con la información requerida.Por ejemplo:
params = {
"permissions": '{ "users": {"AnonymousUser": ["view_resourcebase"]} , "groups":{}}', # layer permissions
"time": "false",
"layer_title": "layer_title",
"time": "false",
"charset": "UTF-8",
}
files = {
"filename": <_io.BufferedReader name="filename">
}
client.put(
"http://localhost:8000/api/v2/uploads/upload/",
auth=HTTPBasicAuth(username, password),
data=params,
files=files,
)
Returns:
- dict with import id of the resource
Paso 3¶
Llame a la página de carga final para activar la importación real.Si se configura correctamente, Geoserver gestionará la carga de forma asincrónica.
client.get("http://localhost:8000/upload/final?id={import_id}")
The `import_id` is returned from the previous step
Paso 4¶
La carga se completó en GeoNode, debemos verificar hasta que Geoserver haya completado su parte.Para ello basta con llamar a la información detallada sobre la carga que estamos realizando.
client.get(f"http://localhost:8000/api/v2/uploads/{upload_id}")
Cuando el estado es «PROCESADO» y la finalización es «100%», podemos ver el recurso en el geonode y el geoservidor.