Pregunta

Estoy construyendo una cosechadora personalizada para importar datos de un sitio externo a CKAN (versión 1.8).

Funciona bastante bien y crea los metadatos y los recursos asociados con él. Me gustaría agregar estos recursos y crear un nuevo CSV para guardarlo en el DataStore mientras se cosecha en la fase de importación.

Sé que puedo usar la API de DataStore, pero prefiero no usar HTTP (no tiene sentido para mí dar una llave de API / Usuario / URL / ... a una cosechadora que tiene permisos para agregar cosas)

¿Es posible llamar a las funciones API de DataStore directamente desde la cosechadora?https://github.com/okfn/ckan/blob/master/ckanext/datastore/logic/action.py

Cada función toma un parámetro de contexto que no está documentado.

¿Fue útil?

Solución

Tienes un par de cosas distintas que estás haciendo aquí:

  • Convertir CSV a la estructura apropiada de Python (o JSON) para la inserción en el almacén de datos
  • Insertando en el almacén de datos

Por este último puedes usar:

La API solo llama a las acciones lógicas (PLUS, AUTH), por lo que son bastante similares, pero el enfoque lógico probablemente será más rápido y podría ser más natural si ya está haciendo un código. Dicho esto, la API podría ser conceptualmente más limpia, ya que tiene buenos límites a sus diferentes componentes en forma de API web definidas.

Para la primera (es decir, la conversión de CSV a JSON) le recomiendo que use el Biblioteca convertidores de datos, especialmente la parte de comas.py que se convierte en exactamente el formato que necesita. Hay un servicio web completo que se está desarrollando en función de los convertidores de datos, pero aún no está completamente operativo.

Otros consejos

Resolví esto usando Ckanext-DataStorer (para el DataStore) y ckanclient (para cargar el archivo)

ckanclient está molestado con CKAN 1.8 porque no se encarga de redirecciones correctamente. Resolvimos con este sangrado y parche sucio. https://gist.github.com/mammadori/4945812

Una mejor solución sería completamente caída de urllib y cambiaría todo el ckancing para usar las solicitudes.

Gracias por su apoyo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top