[PYTHON] Benachrichtigen Sie den Inhalt der Aufgabe vor und nach der Ausführung der Aufgabe mit Fabric

Da ich Fabric verwendete und viele Aufgaben für meine eigenen Zwecke hatte, wollte ich ausgeben, welche Aufgaben ausgeführt werden sollten und welche Aufgaben vor und nach der Ausführung der Aufgaben ausgeführt wurden. Daher habe ich eine CustomTask-Klasse erstellt.

report.py


# -*- coding: utf-8 -*-

import logging
import time

from fabric.tasks import Task
from fabric.operations import *
from fabric.colors import *

class ReportStatus(Task):
    """
CustomTask-Klasse, die Ihnen mitteilt, dass die Aufgabe ausgeführt werden soll und dass sie vor und nach der Ausführung der Aufgabe ausgeführt wurde.

    @task(task_class=ReportStatus, task_name="Test vor und nach der Ausführung anzeigen")
    def something_task():
        print green("Aufgabenausführung")
    """
    def __init__(self, func, task_name, *args, **kwargs):
        super(ReportStatus, self).__init__(*args, **kwargs)
        self.func = func
        self.task_name = task_name

        if hasattr(func, '__doc__') and func.__doc__:
            self.__doc__ = func.__doc__
        else:
            self.__doc__ = task_name

        if hasattr(callable, '__module__'):
            self.__module__ = callable.__module__

    def run(self, *args, **kwargs):
        print cyan("[%s] [%s]Laufen" % (self.task_name, self.func.__name__))
        logging.info("[%s][%s] executing" % (self.func.__name__, self.task_name))

        result = self.func(*args, **kwargs)

        print green("[%s] [%s]Abgeschlossen" % (self.task_name, self.func.__name__), bold=True)
        logging.info("[%s][%s] done" % (self.func.__name__, self.task_name))
        print "\n"

        return result

    def __call__(self, *args, **kwargs):
        return self.run(*args, **kwargs)

    def __getattr__(self, k):
        return getattr(self.func, k)

    def __details__(self):
        return get_task_details(self.func)

Da die Protokollierung auch zum Ausspucken von Protokollen verwendet wird, wird bei entsprechender Einstellung auch das Protokoll ausgegeben.

fabfile.py


# -*- coding: utf-8 -*-

import datetime
import logging
from fabric.colors import *
from fabric.api import *

from report import ReportStatus

log_file_name = "%s.log" % (datetime.datetime.today().strftime("%Y%m%d"))
logging.basicConfig(
    format='[%(asctime)s][%(levelname)s] %(message)s',
    filename=log_file_name, datefmt='%Y/%m/%d %I:%M:%S',
    level=logging.INFO
)

@task(task_class=ReportStatus, task_name="Test vor und nach der Ausführung anzeigen")
def something_task():
    print green("Aufgabenausführung")

Wenn es ausgeführt wird, sieht es so aus.

Screen Shot 2017-01-19 at 01.21.02.png

Das Protokoll wird im angegebenen Format ausgegeben

[2017/01/19 01:20:18][INFO] [something_task][Test vor und nach der Ausführung anzeigen] executing
[2017/01/19 01:20:18][INFO] [something_task][Test vor und nach der Ausführung anzeigen] done

Recommended Posts

Benachrichtigen Sie den Inhalt der Aufgabe vor und nach der Ausführung der Aufgabe mit Fabric
Ändern Sie die Farbe von Fabric-Fehlern und Warnungen
Füllen Sie den fehlenden Wert (null) von DataFrame mit den Werten davor und danach mit pyspark
Den Inhalt der Daten in Python nicht kennen
[Super einfach! ] So zeigen Sie den Inhalt von Wörterbüchern und Listen einschließlich Japanisch in Python an
Definieren Sie eine Aufgabe zum Festlegen der Fabric-Umgebung in YAML
Entfernen Sie Leerzeichen in voller Breite vor und nach der Zeichenfolge (Python).
[Tipps] Probleme und Lösungen bei der Entwicklung von Python + Kivy
Simulation des Inhalts der Brieftasche
Holen Sie sich Informationen von der Meteorological Agency und benachrichtigen Sie Slack über Wetterwarnungen in den 23 Bezirken von Tokio
Verarbeiten Sie den Inhalt der Datei der Reihe nach mit einem Shell-Skript
Zählen Sie die Anzahl der thailändischen und arabischen Zeichen in Python gut
[EC2] So installieren Sie Chrome und den Inhalt jedes Befehls
Geben Sie den Inhalt von ~ .xlsx im Ordner mit Python in HTML aus
Wahrscheinlichkeit der höchsten und niedrigsten Jungtierpreise in Atsumori
[TensorFlow 2] So überprüfen Sie den Inhalt von Tensor im Diagrammmodus
Erstellen Sie eine Funktion, um den Inhalt der Datenbank in Go abzurufen
Überprüfen Sie die Komprimierungsrate und -zeit von PIXZ, die in der Praxis verwendet werden
Holen Sie sich den Titel und das Lieferdatum von Yahoo! News in Python
Ich habe versucht, den Unterschied zwischen Config vor und nach der Arbeit mit pyATS / Genie selbst erstelltem Skript zu berücksichtigen
Wenn Sie den Ausführungsbenutzer mitten in einer Fabric-Aufgabe wechseln möchten, stellen Sie den Kontextmanager ein
Kopieren und Einfügen des Inhalts eines Blattes im JSON-Format mit einer Google-Tabelle (mithilfe von Google Colab)
Die Geschichte von Python und die Geschichte von NaN
Die Geschichte der Teilnahme an AtCoder
Verstehen Sie den Inhalt der sklearn-Pipeline
Siehe den Inhalt von Kumantic Segumantion
Die Geschichte des "Lochs" in der Akte
Erläuterung und Implementierung des in Slack, HipChat und IRC verwendeten XMPP-Protokolls
Diagramm der Geschichte der Anzahl der Ebenen des tiefen Lernens und der Änderung der Genauigkeit
Prognostizieren Sie den Stromverbrauch in 2 Tagen und veröffentlichen Sie ihn in CSV
Ein leicht verständlicher Vergleich der grundlegenden Grammatik von Python und Go
Ändern Sie die Sättigung und Helligkeit von Farbspezifikationen wie # ff000 in Python 2.5
So vergleichen Sie, ob der Inhalt der Objekte in scipy.sparse.csr_matrix identisch ist
Suchen Sie den Namen und die Daten einer freien Variablen in einem Funktionsobjekt
Öffnen Sie eine Excel-Datei in Python und färben Sie die Karte von Japan
Benachrichtigen Sie den Chat über neue Artikel der Qiita-Organisation und verbessern Sie die Lerneffizienz der Organisation!