[PYTHON] Ich habe versucht, Django-Slack

Ich fragte mich, ob es eine praktische Bibliothek gab, um Slack zu benachrichtigen, wenn ein Fehler in Django auftrat, also versuchte ich es. Schließlich plane ich, die Protokolle mit Fluentd zusammenzufassen und zu benachrichtigen, aber ich entwickle sie derzeit. Wenn ich sie jedoch in Situationen, in denen sie für die Öffentlichkeit zugänglich sind, schnell implementieren kann, ist dies meiner Meinung nach vorerst der richtige Weg. Ist die Einführung von.

Was ist Django-Slack?

↓ Das ist Django-Slack. http://django-slack.readthedocs.io/

Was kann ich tun

Grob gesagt die folgenden beiden.

  1. Sie können mit slack_message () eine Nachricht an slack senden.
    http://django-slack.readthedocs.io/#richly-formatted-messages
  2. Senden Sie eine Nachricht, um nachzulassen, wenn eine Ausnahme auftritt.
    http://django-slack.readthedocs.io/#logging-exceptions-to-slack

Also, dieses Mal werde ich es für Letzteres verwenden.

Vorbereitung

Holen Sie sich einen Token, um ihn zu lockern. Ob Sie Test-Token verwenden oder Bots richtig setzen, liegt bei Ihnen. https://api.slack.com/custom-integrations/legacy-tokens https://slack.com/apps/A0F7YS25R-bots

install pip install django-slack

Implementierung

Ändern Sie einfach die Einstellungen.

Hinzufügen von INSTALLED_APPS

Django_slack zu INSTALLED_APPS hinzugefügt

INSTALLED_APPS = [
    # ... some apps
    'django_slack',
]

Logger-Einstellungen

Fügen Sie SlackExceptionHandler zu Django Logger-Handlern hinzu.

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse',
        },
    },
    'handlers': {
        'slack_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django_slack.log.SlackExceptionHandler',
        },
    },
    'loggers': {
        'django': {
            'level': 'ERROR',
            'handlers': ['slack_admins'],
        },
    },
}

Einstellungsoptionen

Geben Sie das Token als Option an.

SLACK_TOKEN = 'SOME_TOKEN'
SLACK_CHANNEL = '#PUBLIC_CHANNEL'
SLACK_USERNAME = 'USER-NAME'
SLACK_ICON_EMOJI = ':bangbang:'
SLACK_FAIL_SILENTLY = True

Wenn Sie "SLACK_FAIL_SILENTLY" auf "False" setzen und bei der Angabe des Kanals einen Fehler machen und in "SlackExceptionHandler" ein Fehler auftritt, wird "Fehler aufgetreten" -> "Notify Slack" -> "Fehler aufgetreten" -> "Notify Slack". Es fällt in eine Endlosschleife.

Weitere Optionen finden Sie weiter unten. http://django-slack.readthedocs.io/#configuration

Kommunikationsbestätigung

Führen Sie Folgendes mit python manage.py shell aus.

from django_slack import slack_message
slack_message('django_slack/exception.slack', {'text': 'hoge'})

Wenn 'hoge' auf dem angegebenen Kanal gepostet wird, ist es erfolgreich. Fügen Sie übrigens "SLACK_BACKEND =" django_slack.backends.UrllibBackend "hinzu, um die Kommunikation in der Umgebung von DEBUG = True zu überprüfen. Wenn die Kommunikationsprüfung fehlschlägt, setzen Sie "SLACK_FAIL_SILENTLY" auf "True" und ein Fehler wird angezeigt.

Ausführung

Django==1.11 django-slack==5.8.0

Impressionen

Mir gefällt, wie einfach es zu bedienen ist. Wenn Sie jedoch "SLACK_FAIL_SILENTLY" auf "True" setzen, wird es wirklich still sein, aber zumindest möchte ich, dass Sie das Protokoll mit dem Logger ("django_slack") ausspucken. https://github.com/lamby/django-slack/blob/24ce48de96f561518e81aa3adef89c4f5f287707/django_slack/api.py#L132

Grundsätzlich glaube ich nicht, dass es in einer Produktionsumgebung verwendet wird, aber wenn Sie es in einer Produktionsumgebung verwenden, scheint es auch ein Sellerie-Backend zu geben, daher scheint es besser, dort asynchrone Verarbeitung zu verwenden.

das ist alles!

Recommended Posts

Ich habe versucht, Django-Slack
Ich habe versucht zu kratzen
Ich habe PyQ ausprobiert
Ich habe es mit Papiermühle versucht
Ich habe es mit Django versucht
Ich habe es mit Spleeter versucht
Ich habe es mit cgo versucht
Ich habe versucht, parametrisiert zu verwenden
Ich habe versucht, Argparse zu verwenden
Ich habe versucht, Mimesis zu verwenden
Ich habe versucht, anytree zu verwenden
Ich habe versucht, Pymc auszuführen
Ich habe ARP-Spoofing ausprobiert
Ich habe versucht, Summpy zu verwenden
Ich habe Python> autopep8 ausprobiert
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, ESPCN zu verwenden
Ich habe versucht, openpyxl zu verwenden
Ich habe versucht, tief zu lernen
Ich habe AWS CDK ausprobiert!
Ich habe versucht, Ipython zu verwenden
Ich habe versucht zu debuggen.
Ich habe versucht, PyCaret zu verwenden
Ich habe versucht, Cron zu verwenden
Ich habe versucht, ngrok zu verwenden
Ich habe versucht, face_recognition zu verwenden
Ich habe versucht, Jupyter zu verwenden
Ich habe versucht, EfficientDet zu verschieben
Ich habe Python> Decorator ausprobiert
Ich habe versucht, TensorFlow auszuführen
Ich habe Auto Gluon ausprobiert
Ich habe versucht, Folium zu verwenden
Ich habe versucht, jinja2 zu verwenden
Ich habe AWS Iot ausprobiert
Ich habe die Bayes'sche Optimierung ausprobiert!
Ich habe versucht, Folium zu verwenden
Ich habe versucht, das Zeitfenster zu verwenden
Ich habe Value Iteration Networks ausprobiert
Ich habe versucht, mit Python zu kratzen
Ich habe die Bildklassifizierung von AutoGluon ausprobiert
Ich habe versucht, PredNet zu lernen
[Ich habe versucht, Pythonista 3 zu verwenden] Einführung
Ich habe versucht, easydict (Memo) zu verwenden.
Ich habe versucht, das Gesicht mit Face ++ zu erkennen
Ich habe versucht, RandomForest zu verwenden
Ich habe versucht, mit PyCaret zu clustern
Ich habe versucht, BigQuery ML zu verwenden
Ich habe "K-Fold Target Encoding" ausprobiert.
Ich habe versucht, PCANet zu implementieren
[Ich habe es versucht] Nand2 Tetris Kapitel 6
Ich habe die Changefinder-Bibliothek ausprobiert!
Ich habe die C-Erweiterung von Python ausprobiert