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.
↓ Das ist Django-Slack. http://django-slack.readthedocs.io/
Grob gesagt die folgenden beiden.
Also, dieses Mal werde ich es für Letzteres verwenden.
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
Ändern Sie einfach die Einstellungen.
Django_slack
zu INSTALLED_APPS hinzugefügt
INSTALLED_APPS = [
# ... some apps
'django_slack',
]
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'],
},
},
}
require_debug_false
auf filter.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
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.
Django==1.11 django-slack==5.8.0
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