Recientes
- Recoger y bloquear IP addresses con ipset y Python
- Cómo cancelar tareas con Python Asynchronous IO (AsyncIO)
- Ejecutar un comando Docker dentro de un contenedor Cron Docker
- Creación de un Captcha con Flask, WTForms, SQLAlchemy, SQLite
- Multiprocessing, bloqueo de archivos, SQLite y pruebas
- Envío de mensajes a Slack mediante chat_postMessage
Más vistos
- Flask RESTful API validación de parámetros de solicitud con esquemas Marshmallow
- Usando UUIDs en lugar de Integer Autoincrement Primary Keys con SQLAlchemy y MariaDb
- Usando Python's pyOpenSSL para verificar los certificados SSL descargados de un host
- Conectarse a un servicio en un host Docker desde un contenedor Docker
- Usando PyInstaller y Cython para crear un ejecutable de Python
- SQLAlchemy: Uso de Cascade Deletes para eliminar objetos relacionados
Etiquetas
AiohttpAJAXAlembicAlpineAPIApplication settingsAsyncBabelBeautifulSoupBootstrapCachingCaptchaCeleryColorsCompileCronCryptographyCSRF protectionCythonDecoratorDeep LearningDeepLDispatcherMiddleWareDistributionDNSDockerDocker-composeEmailExceptionsFastAPIFlaskGunicornIconsIMAPInternetISPConfigJavascriptJinja2Log fileLoggingMachine LearningMariaDBMessage brokerMultilanguageMultiprocessingPentestingPikaPostfixProfilingPyInstallerpyOpenSSLPytestRabbitMQRedisSecurity testingSlackSQLAlchemyTestingThreadsTimezoneToastsUbuntu TouchUUIDWerkzeugWheelsWTFormsRecoger y bloquear IP addresses con ipset y Python
21 mayo 2023 0
Peter
Si tienes un servidor conectado a Internet, probablemente hayas visto esto en tus archivos de registro: montones de peticiones externas ilegales intentando acceder a tus servicios.
Yo mantengo un servidor Debian , y utilizo Fail2Ban para la prevención de intrusiones. Práctica estándar, instalar, configurar y olvidar. Como el servidor se caía a ciertas horas, decidí echar un vistazo más de cerca.
Me ...
Cómo cancelar tareas con Python Asynchronous IO (AsyncIO)
2 mayo 2023 0
Peter
Para un proyecto estaba usando AIOHTTP para comprobar las respuestas de muchos sitios web remotos, URLs. Las URLs provenían de una lista. Esta lista puede contener duplicados.
Todo bien hasta que noté que algunas respuestas también tenían el código de estado HTTP-429 'Demasiadas peticiones'. Cualquiera que sea la razón, sobrecarga, seguridad, queremos comportarnos amigablemente y no queremos llamar ...
Ejecutar un comando Docker dentro de un contenedor Cron Docker
18 abril 2023 0
Peter
Al utilizar Docker, su aplicación suele constar de varios contenedores Docker . A menudo, quieres ejecutar scripts dentro de estos contenedores en determinados momentos, por ejemplo, cada cinco minutos, una vez por hora, una vez al día.
Aquí es donde el programador de tareas Cron entra en juego, y hay varias opciones sobre cómo hacer esto. En este post creo un contenedor Cron separado, y uso el ...
Creación de un Captcha con Flask, WTForms, SQLAlchemy, SQLite
10 abril 2023
Peter
En el pasado escribí algo de código para un (sólo texto) Captcha para un sitio web Flask . Esto es una actualización. Aquí utilizo un paquete Pypi para generar la imagen. Además también añadí un botón de actualización de imagen Captcha .Puedes probar el código de abajo, es un formulario de suscripción (newsletter). Aunque esta es una solución Captcha para un sitio web Flask , se puede convertir ...
Multiprocessing, bloqueo de archivos, SQLite y pruebas
30 marzo 2023 0
Peter
Estaba trabajando en un proyecto con SQLAlchemy y PostgreSQL. Para algunas tablas, quería limitar el número de filas por user, y lo hice añadiendo una función de comprobación y un trigger PostgreSQL .
Probando manualmente todo parecía estar funcionando bien, pero ¿qué pasaría si un user iniciara múltiples procesos y añadiera filas exactamente al mismo tiempo? He añadido el 'pg_advisory_xact_lock' ...
Envío de mensajes a Slack mediante chat_postMessage
23 marzo 2023 0
Peter
Para un proyecto que ya estaba enviando mensajes por correo electrónico, pero ahora también quería enviar mensajes a Slack. Por supuesto, estamos utilizando el Python Slack SDK.
La documentación se puede encontrar en la página: Python Slack SDK - Cliente Web. En este post creo una simple clase SlackAPI con su propia clase de excepción SlackError.
Crear y ...
PostgreSQL copia de seguridad con Docker SDK para Python
9 marzo 2023 0
Peter
Este es un breve post sobre la copia de seguridad de una base de datos Dockerized PostgreSQL . Para acceder a la base de datos, normalmente ejecutamos un script Bash en el host, con comandos como:
docker exec -t <container> bash -c '<command>'
En este post sustituimos nuestro script Bash por un script Python . ¿Por qué? Porque conocemos Python y programar en Bash puede llevarnos ...
Evitar el envío de mensajes duplicados a un sistema remoto
21 febrero 2023 0
Peter
Muchas veces las aplicaciones deben enviar mensajes a un sistema remoto. En un mundo perfecto sólo tenemos que ocuparnos del Flujo Feliz: no ocurren cosas malas como excepciones, errores.
Por desgracia, el mundo no es perfecto. Además de los errores de programación, las conexiones pueden fallar, los sistemas de bases de datos pueden fallar, los sistemas remotos pueden fallar. ...
Politician Translator con Spacy y Negate
11 enero 2023 0
Peter
Este es un post corto. Todo el tiempo oímos hablar a los políticos, pero la mayoría de las veces quieren decir lo contrario. Por ejemplo, si un político dice que va a bajar los impuestos, los impuestos subirán. Si un político dice que no una relación con esa mujer, entonces ... Etc.
Así que pensé, ¿por qué no hacer un Politician Translator en Python? En este post, empiezo con los resultados. El ...
Del código monolítico a los servicios con RabbitMQ y Pika
8 enero 2023 0
Peter
Este post es sobre el uso de RabbitMQ en su aplicación Python . Si ya estás usando Rabbit, probablemente no encontrarás nada útil en este post. ¿Por qué un post sobre RabbitMQ? Porque tengo una aplicación que lo está utilizando desde hace un año, y pensé en compartir mis experiencias.
En este post, transformamos una aplicación ...
Aplicación Flask que muestra stdout y stderr de un trabajo de fondo
19 diciembre 2022 0
Peter
En un proyecto Flask , necesitaba ejecutar un trabajo en segundo plano, más concretamente un comando que se ejecuta en un terminal (Linux), y mostrar su salida, stdout y sterr, en tiempo real en una ventana del navegador. Puedes encontrar algunas soluciones en internet y esta es una más. También estoy usando un código que encontré en la web, ver enlaces más abajo.
Esta solución está utilizando:
multiproceso, ...
Agregar y tail Docker registros de contenedores utilizando Docker SDK para Python
11 diciembre 2022 0
Peter
El problema: Finalmente tienes una aplicación Docker que consiste en muchos (micro) servicios (contenedores) y quieres monitorizar todos estos contenedores en busca de errores.
Los servicios son en su mayoría scripts Python que utilizan el módulo de registro estándar Python e imprimen mensajes a stdout (y stderr):
... DEBUG ...
... INFO ...
... ERROR ...
Utilizando el controlador de ...
Registro de la aplicación Python con Docker
5 diciembre 2022 0
Peter
Cuando desarrolle una aplicación de software, probablemente lo primero que configure sea el registro. Primero sólo a la consola, pero pronto añadirás archivos de registro.
Hace algunos años empecé a usar Docker para desarrollo y producción. No hice muchos cambios al pasar a Docker. Los archivos de registro de la aplicación siguen estando en un directorio de registro en un volumen Docker . Esto ...
LogLineFollower: Seguir las líneas de un archivo de registro creciente
9 septiembre 2022 0
Peter
Estaba buscando una manera de procesar líneas de un archivo de registro mientras crecía. Encontré algunos fragmentos y paquetes en internet pero no exactamente lo que quería. Por eso decidí escribir el mío propio.
Después de haber codificado una primera versión, busqué de nuevo y encontré varios paquetes más. Pero, mirando la descripción, el código y los problemas, decidí quedarme con mi propio código. ...
Conectarse a un servicio en un host Docker desde un contenedor Docker
11 agosto 2022 0
Peter
Si tienes algún problema con Docker y buscas en Internet, es casi seguro que te tropieces con la pregunta ¿Cómo puedo conectarme a localhost? Lo que la gente quiere decir es: Cómo puedo conectarme a un servicio en el host Docker desde un contenedor Docker . Cuando empecé a usar Docker también tuve problemas con esto.
Estoy usando Linux, Ubuntu, y cuando finalmente host.docker.internal ...
AIOHTTP: Detección del tiempo de espera del DNS con servidores de nombres personalizados
27 julio 2022 0
Peter
Cuando se utiliza AIOHTTP para obtener datos de una página web en Internet, probablemente se utiliza un tiempo de espera para limitar el tiempo máximo de espera.
Si está utilizando un nombre de dominio, la dirección IP debe ser resuelta. Sin usar un resolvedor separado usted depende del sistema operativo subyacente. Cualquier error se propaga a su aplicación.
Yo ...
Flask Message Flashing: Sustituir Bootstrap Alerts por Toasts
25 julio 2022 0
Peter
Cuando tienes una aplicación Flask con Bootstrap, probablemente estés usando Bootstrap Alerts para mostrar flashed messages. Yo los uso y funcionan, pero no estoy muy contento. Por defecto, no se ven bien y en la mayoría de los casos ocupan mucho espacio en la pantalla. ¿Y realmente quieres que las notificaciones como 'has iniciado sesión' sean un Bootstrap Alert que debe cerrar el user? ¡Añadiendo ...
SQLAlchemy: Uso de Cascade Deletes para eliminar objetos relacionados
16 julio 2022 1
Peter
Aunque la documentación de SQLAlchemy ORM es muy buena, a veces es confusa y carece de ejemplos claros, pero tal vez sea sólo cosa mía. Sobre los Cascade Delete, encuentro el siguiente texto de la documentación de SQLAlchemy alucinante:
El valor por defecto de la relación 'cascade'-opción es 'save-update, merge'. La configuración alternativa típica para este parámetro es todo o, más comúnmente, ...
SQLAlchemy PostgreSQL: Añadir un segundo BigInteger Primary Key
28 mayo 2022 0
Peter
Supongamos que utilizamos UUID Primary Keys en nuestro proyecto. Esto funciona bien, pero también hay algunas tablas con millones de registros. Sabemos que las operaciones con SELECT y INSERT basadas en UUID pueden ser mucho más lentas en comparación con las tablas Integer . Lo que queremos es que estas enormes tablas sólo tengan BigInteger Primary Keys y que se vinculen a otras tablas basadas ...
Redirigir una excepción en Flask utilizando un decorator
7 mayo 2022 0
Peter
En una aplicación Flask , normalmente se implementan manejadores de excepción globales. En muchos casos, esto es suficiente. ¿Pero qué pasa si quieres más control?
En un proyecto, me estaba conectando a un API y quería una serie de rutas que utilizaran el API para redirigir a una página de 'inicio' en caso de un error del API , con un mensaje apropiado, por supuesto. He implementado esto usando ...