Red de conocimiento informático - Problemas con los teléfonos móviles - Después de que el programa Python informa un error, ¿hay alguna buena manera de iniciarlo de nuevo además de intentarlo?

Después de que el programa Python informa un error, ¿hay alguna buena manera de iniciarlo de nuevo además de intentarlo?

¡Maneja sólo las excepciones que deberían ser manejadas! ¡Vuelva a intentar únicamente el proceso que se pueda volver a intentar! No agregue try... excepto... casualmente. Capturar sin consideración solo traerá problemas a su propio proceso de depuración.

No todas las excepciones pueden ser manejadas por usted. Para muchas excepciones, debe enviarlas a la persona que llama. Si detecta una excepción y no la descarta, le está diciendo a la persona que llama que el proceso anterior ya lo hizo. falló Puede continuar resolviendo problemas, pero si ocurre un problema, continuar haciéndolo a menudo tendrá consecuencias más graves, que generalmente son peores que abortar todo el proceso mediante una excepción. Estas excepciones generalmente finalmente se envían al usuario que ejecuta el programa, o se registran en el registro a través del marco del servicio o se devuelven a la persona que llama remotamente, de modo que al ver esta excepción tendrá pistas para encontrar el problema. Solo puede hacer esto si está seguro de que detectar esta excepción no tendrá consecuencias más graves y, si no es una excepción normal, asegúrese de escribir esta excepción en el registro para proporcionar pistas para encontrar el problema.

No se pueden reintentar todos los procesos. Si reintenta muchos procesos una vez, todo el proceso se interrumpirá por completo. Por ejemplo, se produce una excepción de red al llamar a la interfaz web. ya se ha ejecutado, o puede que no se ejecute correctamente. La mayoría de las API no son idempotentes cuando se diseñan nuevamente. Si lo intenta nuevamente, se realizará la operación correspondiente. Por ejemplo, si su operación es transferir 100 yuanes. Nuevamente se realizarán más transferencias por 100 yuanes. Si desea introducir un mecanismo de reintento fallido, debe asegurarse de que el proceso sea idempotente en el diseño del proceso. Idempotencia significa que ejecutar el mismo proceso varias veces no provocará resultados anormales. En realidad, hay muchos detalles involucrados en este requisito de diseño y no es tan fácil de cumplir, por lo que normalmente me opongo a este tipo de código que lo vuelve a intentar tres veces sin pensar.

Este principio también se puede extender al uso de herramientas externas como supervisord para reiniciar automáticamente los servicios. En realidad, este es un problema que debe tenerse en cuenta:

Si su programa es completamente normal, no debería ser anormal. Salir;

Si sale de manera anormal y no sabe qué sucedió, ¿cómo sabe que debe reiniciar inmediatamente?

¿Qué debo hacer si se cierra de forma anormal después de reiniciar?

Por ejemplo, cuando algunos programas fallan, pueden generar archivos de volcado y escribir una gran cantidad de registros de excepciones. En este caso, si se reinician automáticamente sin consideración, continuarán escribiendo registros o generando volcados. puede llenar rápidamente el disco, provocando que otros servicios e incluso todo el servidor se vuelvan anormales. Para otro ejemplo, algunos programas llamarán a servicios externos cuando se inicien. El proceso de inicialización puede ejercer presión sobre los servicios externos. Las excepciones repetidas y las inicializaciones repetidas pueden hacer que todo el servicio externo no esté disponible. Estas posibles consecuencias requieren un análisis y una discusión cuidadosos, por lo que algunas herramientas que admiten las funciones correspondientes tendrán algunas configuraciones, como cuánto tiempo se ejecutarán después de reiniciar antes de reiniciar, que deben configurarse cuidadosamente.

Si no puede presentar un argumento suficiente para demostrar que estas estrategias de reintento automático y reinicio automático no causarán otros problemas, le recomiendo que adopte una estrategia más conservadora y solo utilice el monitoreo para detectar si el servicio está disponible. El procesamiento de alarmas manual se utiliza para resolver posibles fallas anormales del servicio. Si su servicio es lo suficientemente estable, esto no causará mucha presión de operación y mantenimiento. Si el servicio no es lo suficientemente estable, primero debe mejorar la estabilidad. servicio.

MANTÉNLO SIMPLE Y ESTÚPIDO, NO SEAS DEMASIADO INTELIGENTE

上篇: ¿Se puede conectar el controlador switchpro a un teléfono móvil? 下篇: ¿Qué significan TVM y BOS? ¿Cómo gestionar un negocio? El propósito de BOS no es construir una solución grande e integral, sino construir una plataforma que pueda resolver la contradicción entre la creciente complejidad de las aplicaciones y el rápido desarrollo/implementación, y que pueda satisfacer las necesidades de todos los tiempos. -Necesidad de nuevos modelos de negocio y tecnologías cambiantes. BOS es un middleware de aplicaciones basado en tecnología J2EE. Es una plataforma de desarrollo y un entorno de ejecución diseñado para el desarrollo de aplicaciones basadas en J2EE: realiza parte del trabajo que debe completarse al desarrollar utilizando métodos de desarrollo tradicionales, para que los desarrolladores y diseñadores puedan concentrarse. en Sobre las relaciones clave de lógica empresarial. Desde la perspectiva del sistema de aplicación, usar BOS es una reutilización a nivel binario en lugar de una reutilización a nivel de código fuente. El sistema de aplicación no necesita modificar el código fuente del propio BOS. BOS aporta las siguientes características a los sistemas de aplicaciones integrados en él: 1. Arquitectura basada en componentes 2. Procesos de negocio basados ​​en eventos 3. Independencia de plataforma 4. Flujo de trabajo 5. Múltiples interfaces de usuario 6. Rápida implementación y gestión de cambios 7. Opciones de configuración de red configurables 8. Características de rendimiento escalables 1. ¿Proporciona soporte para el modelo de aplicación del marco empresarial? Proporciona interfaces y requisitos de integración entre los sistemas de destino. Proporciona otros componentes comerciales básicos, como monedas, tipos de cambio y unidades de medida. 2 El motor de reglas brinda soporte para las siguientes funciones: ? Funciones de lógica de negocios variables en el modelo de objetos abstractos; ? El motor de flujo de trabajo admite reglas variables en las condiciones del proceso de flujo de trabajo. ¿Completa la transferencia de objetos de negocios a bases de datos relacionales? operaciones: agregar, eliminar y modificar; ? Proporcionar información de mapeo entre objetos y bases de datos relacionales; ? Proporcionar soporte para personalizar las características de los atributos de los objetos comerciales en el modelo de objetos abstractos; Modelo de objetos reutilizables cuyas clases contienen todos los métodos que los desarrolladores de aplicaciones heredan y utilizan, y definiciones abstractas de los métodos que los desarrolladores de los objetos comerciales de la aplicación podrían implementar. Estas clases contienen métodos completos que los desarrolladores de aplicaciones pueden heredar y utilizar, y definiciones abstractas de métodos que los desarrolladores de objetos de negocio de aplicaciones pueden implementar. Los desarrolladores de aplicaciones pueden utilizar este modelo de objetos para crear marcos y aplicaciones OO. 5 ¿Organización y autoridad? ¿Organización y permisos? Autenticación de usuario 6 Motor de sincronización de aplicaciones sin conexión Motor de sincronización de datos sin conexión. 7 Flujos de trabajo Resuelva problemas impulsados ​​por procesos para aplicaciones con lógica de negocios y objetos de negocios complejos: cuando la lógica de negocios cambia, se pueden implementar nuevos procesos de negocios ajustando los flujos de trabajo en lugar de volver a desarrollar completamente la aplicación. 8 El marco de la aplicación web incluye el marco de la aplicación web y los componentes de la capa de presentación web. Proporciona soporte arquitectónico para las funciones descritas en el marco empresarial: soporte en varios idiomas, soporte para diferentes clientes. Reduce la complejidad del desarrollo de aplicaciones web: utiliza el modelo MVC, distingue. Funciones de los diseñadores y redactores de páginas 2.9 El módulo de impresión en red resuelve problemas de impresión en navegadores (IE) y aplicaciones Java. Confiabilidad Dado que el sistema es un sistema de servicio en línea, tiene altos requisitos de confiabilidad del sistema. El grupo de soporte debe brindar un servicio ininterrumpido las 24 horas del día, los 7 días de la semana. Rendimiento El sistema de destino de BOS es una aplicación de Internet/Intranet de nivel empresarial en modo Web. Los requisitos de rendimiento se reflejan principalmente en la cantidad de usuarios simultáneos y la cantidad de datos. Con respecto a los requisitos de características de tiempo, dado que el sistema de destino no es un sistema de aplicación en tiempo real, no existen requisitos estrictos para indicadores como el tiempo de respuesta y el tiempo de procesamiento de actualizaciones. Sin embargo, en aplicaciones reales, estos indicadores de características de tiempo del sistema dependen principalmente de la velocidad de la red de la aplicación, y el procesamiento del sistema en sí no debería constituir un cuello de botella. Volumen de datos previsible: ? Número de usuarios simultáneos admitidos: 1000 ? Archivos administrados: ilimitado Base de datos: 10 000 000 o más Módulos auxiliares A continuación se describen los componentes necesarios para el funcionamiento del BOS. 5.1 Servidor de aplicaciones APUSIC BOS admite servidores de aplicaciones como Apusic, Weblogic y WebSphere. Los usuarios pueden adquirir el servidor de aplicaciones correspondiente según sus propias características. 5.2 Servidor web Este elemento es opcional (se ha proporcionado un servidor de aplicaciones). Servidor web), los usuarios pueden elegir IIS, Apache u otro servidor web.