Recent
- IP addresses verzamelen en blokkeren met ipset en Python
- Taken annuleren met Python Asynchrone IO (AsyncIO)
- Voer een Docker commando uit in een Docker Cron container.
- Een Captcha maken met Flask, WTForms, SQLAlchemy, SQLite
- Multiprocessing, vergrendeling van bestanden, SQLite en testen
- Berichten naar Slack sturen met chat_postMessage
Meest bekeken
- Flask RESTful API verzoekparametervalidatie met Marshmallow-schema's
- Gebruik van UUIDs in plaats van Integer Autoincrement Primary Keys met SQLAlchemy en MariaDb
- Met behulp van Python's pyOpenSSL om SSL-certificaten die van een host zijn gedownload te controleren
- Maak verbinding met een dienst op een Docker host vanaf een Docker container
- PyInstaller en Cython gebruiken om een Python executable te maken
- SQLAlchemy: Gebruik van Cascade Deletes om verwante objecten te verwijderen
Tags
AiohttpAJAXAlembicAlpineAPIApplication settingsAsyncBabelBeautifulSoupBootstrapCachingCaptchaCeleryColorsCompileCronCryptographyCSRF protectionCythonDecoratorDeep LearningDeepLDispatcherMiddleWareDistributionDNSDockerDocker-composeEmailExceptionsFastAPIFlaskGunicornIconsIMAPInternetISPConfigJavascriptJinja2Log fileLoggingMachine LearningMariaDBMessage brokerMultilanguageMultiprocessingPentestingPikaPostfixProfilingPyInstallerpyOpenSSLPytestRabbitMQRedisSecurity testingSlackSQLAlchemyTestingThreadsTimezoneToastsUbuntu TouchUUIDWerkzeugWheelsWTFormsIP addresses verzamelen en blokkeren met ipset en Python
21 mei 2023 0
Peter
Als je een server hebt die verbonden is met het internet, heb je dit waarschijnlijk gezien in je logbestanden: veel illegale externe verzoeken die proberen toegang te krijgen tot je diensten.
Ik onderhoud een Debian server, en gebruik Fail2Ban voor inbraakpreventie. Standaard praktijk, installeren, configureren en vergeten. Omdat de server op bepaalde tijden werd platgelegd, besloot ik een kijkje ...
Taken annuleren met Python Asynchrone IO (AsyncIO)
2 mei 2023 0
Peter
Voor een project gebruikte ik AIOHTTP om de antwoorden van vele websites op afstand, URL's, te controleren. De URL's kwamen uit een lijst. Deze lijst kan duplicaten bevatten.
Alles in orde totdat ik merkte dat sommige antwoorden ook status code hadden: HTTP-429 'Too Many Requests'. Wat de reden ook is, overbelasting, veiligheid, we willen ons vriendelijk gedragen en willen identieke URL's niet opnieuw ...
Voer een Docker commando uit in een Docker Cron container.
18 april 2023 0
Peter
Wanneer u Docker gebruikt, bestaat uw applicatie meestal uit meerdere Docker containers. Vaak wilt u in deze containers op bepaalde momenten scripts uitvoeren, bijvoorbeeld elke vijf minuten, eens per uur, eens per dag.
Dit is waar de taakplanner Cron om de hoek komt kijken, en er zijn verschillende opties om dit te doen. In deze post maak ik een aparte Cron container, en gebruik het Docker Exec ...
Een Captcha maken met Flask, WTForms, SQLAlchemy, SQLite
10 april 2023
Peter
In het verleden heb ik wat code geschreven voor een (text-only) Captcha voor een Flask website. Dit is een update. Hier gebruik ik een Pypi pakket om de afbeelding te genereren. Daarnaast heb ik ook een Captcha image refresh button toegevoegd.Je kunt onderstaande code proberen, het is een (nieuwsbrief) inschrijfformulier. Hoewel dit een Captcha oplossing is voor een Flask website, kan het ...
Multiprocessing, vergrendeling van bestanden, SQLite en testen
30 maart 2023 0
Peter
Ik werkte aan een project met SQLAlchemy en PostgreSQL. Voor een paar tabellen wilde ik het aantal rijen per user beperken, en deed dit door een PostgreSQL controlefunctie en trigger toe te voegen.
Bij handmatig testen bleek alles goed te werken, maar wat als een user meerdere processen zou starten en rijen zou toevoegen op precies hetzelfde moment? Ik heb de 'pg_advisory_xact_lock' toegevoegd ...
Berichten naar Slack sturen met chat_postMessage
23 maart 2023 0
Peter
Voor een project stuurde ik al berichten per e-mail, maar nu wilde ik ook berichten naar Slack sturen. Natuurlijk gebruiken we de Python Slack SDK.
De documentatie is te vinden op de pagina: Python Slack SDK - Web Client. In deze post maak ik een eenvoudige SlackAPI klasse met een eigen SlackError-uitzonderingsklasse.
Maak en configureer een nieuwe Slack App
We zullen onze berichten naar een Slack ...
PostgreSQL back-up met Docker SDK voor Python
9 maart 2023 0
Peter
Dit is een kort bericht over de back-up van een Dockerized PostgreSQL database. Om toegang te krijgen tot de database draaien we meestal een Bash-script op de host, met commando's als:
docker exec -t <container> bash -c '<command>'
In deze post vervangen we ons Bash-script door een Python -script. Waarom? Omdat we Python kennen en programmeren in Bash tijdrovend kan zijn. Hoewel ...
Voorkomen dat dubbele berichten naar een extern systeem worden gestuurd
21 februari 2023 0
Peter
Vaak moeten toepassingen berichten sturen naar een systeem op afstand. In een perfecte wereld hebben we alleen te maken met de Happy Flow: er gebeuren geen slechte dingen zoals uitzonderingen of fouten.
Helaas is de wereld niet perfect. Naast programmeerfouten kunnen verbindingen falen, databasesystemen kunnen falen, systemen op afstand kunnen falen. Een eenvoudige vraag - kun je wat code schrijven ...
Politician Translator met Spacy en Negate.
11 januari 2023 0
Peter
Dit is een kort bericht. De hele tijd horen we politici praten, maar meestal bedoelen ze het tegenovergestelde. Bijvoorbeeld, als een politicus zegt dat hij de belastingen zal verlagen, dan gaan de belastingen omhoog. Als een politicus zegt dat hij geen relatie heeft met die vrouw, dan... Etc.
Dus ik dacht, waarom geen Politician Translator maken in Python? In deze post begin ik met de resultaten. ...
Van monolithische code naar diensten met RabbitMQ en Pika
8 januari 2023 0
Peter
Dit bericht gaat over het gebruik van RabbitMQ in uw Python toepassing. Als je Rabbit al gebruikt, zul je waarschijnlijk niets nuttigs vinden in deze post. Waarom een bericht over RabbitMQ? Omdat ik een applicatie heb die het gebruikt, die al een jaar draait, en ik wilde mijn ervaringen delen.
In dit bericht transformeren we een monolithische applicatie in diensten die ontkoppeld zijn door wachtrijen. ...
Flask toepassing met stdout en stderr van een achtergrondjob.
19 december 2022 0
Peter
In een Flask project moest ik een achtergrondjob uitvoeren, meer bepaald een commando dat draait in een (Linux) terminal, en de uitvoer ervan, stdout en sterr, in real time tonen in een browservenster. Er zijn enkele oplossingen te vinden op het internet en dit is er nog een. Ik gebruik ook wat code die ik op het web heb gevonden, zie onderstaande links.
Deze oplossing gebruikt:
multiprocessing, ...
Samenvoegen en tail Docker containerlogs met behulp van Docker SDK voor Python
11 december 2022 0
Peter
Het probleem: U heeft uiteindelijk een Docker applicatie die bestaat uit vele (micro) services (containers) en wilt al deze containers monitoren op fouten.
De services zijn meestal Python scripts die de standaard Python logging module gebruiken en berichten afdrukken naar stdout (en stderr):
... DEBUG ...
... INFO ...
... ERROR ...
Met behulp van de standaard Docker json-file logging ...
Python toepassingsregistratie met Docker
5 december 2022 0
Peter
Wanneer je een softwaretoepassing ontwikkelt, is het eerste wat je gaat instellen waarschijnlijk loggen. Eerst alleen naar de console, maar al snel zul je logbestanden toevoegen.
Enkele jaren geleden begon ik Docker te gebruiken voor ontwikkeling en productie. Ik heb niet veel veranderd toen ik overstapte op Docker. De applicatie logbestanden staan nog steeds in een log directory op een Docker ...
LogLineFollower: Regels van een groeiend logbestand volgen
9 september 2022 0
Peter
Ik was op zoek naar een manier om regels van een logbestand te verwerken terwijl het groeit. Ik vond wat snippets en packages op het internet, maar niet precies wat ik wilde. Dat is waarom ik besloot om mijn eigen versie te schrijven.
Nadat ik een eerste versie had gecodeerd, zocht ik opnieuw en vond nog enkele pakketten. Maar, kijkend naar de beschrijving, de code en de problemen, besloot ik het ...
Maak verbinding met een dienst op een Docker host vanaf een Docker container
11 augustus 2022 0
Peter
Als u met een of ander Docker probleem zit en op het Internet zoekt, zult u vrijwel zeker op de vraag stuiten: Hoe kan ik verbinding maken met localhost? Wat mensen bedoelen is: Hoe kan ik verbinding maken met een service op de Docker host vanuit een Docker container. Toen ik Docker begon te gebruiken, worstelde ik hier ook mee.
Ik gebruik Linux, Ubuntu, en toen eindelijk host.docker.internal ...
AIOHTTP: Opsporen van DNS timeout met aangepaste nameservers
27 juli 2022 0
Peter
Wanneer u AIOHTTP gebruikt om gegevens van een webpagina op het internet op te halen, gebruikt u waarschijnlijk een time-out om de maximale wachttijd te beperken.
Als u een domeinnaam gebruikt, moet het IP-adres worden omgezet. Zonder gebruik te maken van een aparte resolver bent u afhankelijk van het onderliggende besturingssysteem. Eventuele fouten verspreiden zich naar je applicatie.
Ik wilde ...
Flask Message Flashing: Bootstrap Alerts vervangen door Toasts
25 juli 2022 0
Peter
Wanneer je een Flask applicatie hebt met Bootstrap, gebruik je waarschijnlijk Bootstrap Alerts om flashed messages te laten zien. Ik gebruik ze, en ze werken, maar ik ben er niet echt gelukkig mee. Standaard zien ze er niet mooi uit en in de meeste gevallen nemen ze veel ruimte in op het scherm. En wil je echt dat meldingen als 'u bent ingelogd' een Bootstrap Alert zijn die door de user gesloten ...
SQLAlchemy: Gebruik van Cascade Deletes om verwante objecten te verwijderen
16 juli 2022 1
Peter
Hoewel de documentatie van SQLAlchemy ORM erg goed is, is het soms verwarrend en ontbreken duidelijke voorbeelden, maar misschien ligt dat aan mij. Over Cascade Delete's vind ik de volgende tekst uit de SQLAlchemy documentatie mind-blowing:
De standaardwaarde van de relatie 'cascade'-optie is 'save-update, merge'. De typische alternatieve instelling voor deze parameter is ofwel alles ofwel, ...
SQLAlchemy PostgreSQL: Voeg een tweede BigInteger Primary Key toe
28 mei 2022 0
Peter
Stel dat we UUID Primary Keys in ons project gebruiken. Dit werkt prima, maar er zijn ook een paar tabellen met miljoenen records. We weten dat SELECT en INSERT operaties met UUID gebaseerde Primary Key tabellen veel langzamer kunnen zijn vergeleken met Integer gebaseerde Primary Key tabellen. Wat we willen is dat deze enorme tabellen alleen BigInteger Primary Keys hebben en ze te koppelen ...
Doorverwijzen naar een uitzondering in Flask met behulp van een decorator
7 mei 2022 0
Peter
In een Flask toepassing, implementeert u typisch globale uitzonderingshandlers. In veel gevallen is dit voldoende. Maar wat als u meer controle wilt?
In een project maakte ik verbinding met een API en ik wilde een aantal routes die gebruik maakten van de API om te redirecten naar een 'start' pagina in geval van een API fout, met een toepasselijke boodschap natuurlijk. Ik heb dit geïmplementeerd ...