Conjunto de preguntas 02 de la serie Python: cuando se utiliza el cliente datahub_console proporcionado por Alibaba Cloud para descargar datos del centro de datos, los parámetros del punto de tiempo especificado no son válidos.

Antecedentes: solución al problema de que la configuración de hora no es válida cuando el paquete SDK de datahub descarga datos de temas

Descargue el cliente de la consola datahub del sitio web oficial de Alibaba Cloud. Durante el uso, descubrí que después de especificar cualquier punto de tiempo, descubrí que la descarga siempre comienza desde el dato más antiguo en el datahub. Inicialmente se sospecha que hay un problema. con el paquete del cliente. URL de descarga del cliente:

https://help.aliyun.com/document_detail/184383.html?spm=a2c4g.11186623.6.585.7e0c642e97pFDC

Entonces, se me ocurrió la idea de descargar directamente el SDK de datahub para escribir herramientas de operación y mantenimiento, usando la versión 2.7.15 de Python.

Consulte mi otro artículo para conocer el proceso de instalación:

https://blog.csdn.net/weixin_40012925/article/details/126317198

Después de configurar el entorno, comenzamos a escribir la interfaz de descarga que llamó al SDK. El resultado fue el mismo que usar el cliente datahub_console directamente. Si especificamos algún tiempo, se descargan los datos almacenados por más tiempo en el datahub, así que analizamos los motivos: 1) El SDK en sí no admite la especificación del punto de compensación de tiempo, el parámetro no es válido; 2) Hay un problema con el uso de la interfaz de llamada.

A partir de la consulta del punto de tiempo del parámetro, los parámetros solo admiten el formato de marca de tiempo. Descubrí que la función de tiempo de Python convierte la hora en una marca de tiempo en el segundo nivel. Resultó que había una marca de tiempo en los datos que descargué que registraba el nivel de milisegundos. "Me sentí como si me cambiara de ropa. Esta es la razón, así que convertí la marca de tiempo a *1000 y luego pasé los parámetros. Como resultado, se informó un error de tipo de parámetro. El requisito de la interfaz es de tipo int y la marca de tiempo del paso El parámetro es de tipo largo.

Vea el paquete de código fuente del SDK y obtenga la información de la función del cursor del centro de datos de la siguiente manera:
Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí


    @type_assert(object, str, str, str, CursorType, long)
    def get_cursor(self, project_name, topic_name, shard_id, cursor_type, param=-1):

        return self._datahub_impl.get_cursor(project_name, topic_name, shard_id, cursor_type, param)

Así que pensé en cambiar el tipo int de renderizado limitado a tipo largo y luego reinstalar el paquete SDK para resolver el problema.
Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_40012925/article/details/126317578
Recomendado
Clasificación