Kleiner Nachtrag:
1. Mir ist aufgefallen, dass wenn ich mein Skript über einen watchdog bzw. generell im Hintergrund starte, das Skript zwar beendet wird, allerdings nicht in die Befehlszeile der Konsole zurückgekehrt wird. Bzw. Vielleicht läuft es sogar noch, ist nicht zu erkennen. Woran liegt das und wie kann ich es beheben?
2. Ist zwar etwas OT aber bevor ich schon wieder n neuen Thread starte ... In meinem Skript wird eine Email verschickt, dieser Vorgang spielt sich irgendwie jedes mal in meiner Konsole ab. Das will ich aber nicht, wie behebe ich auch das?
Code: Alles auswählen
import smtplib
import os
import signal
import MySQLdb as db
from contextlib import closing
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
def send_email(content, mysql_error_code):
fromaddr = ""
toaddr = ""
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "MySQL Error: " + mysql_error_code
msg.attach(MIMEText(content))
text = msg.as_string()
server = smtplib.SMTP('', 25)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.login('','')
server.sendmail(fromaddr, toaddr, text)
server.quit()
def kill_script():
pid = os.getpid()
os.kill(pid, signal.SIGKILL)
def insert_into_database(timestamp, datum, uhrzeit, energy_cam_value):
try:
with closing(
db.connect(
host='',
user='',
passwd='',
db='')
) as connection:
connection.cursor().execute(
'INSERT INTO EC_Zaehler_01(Zeitstempel, Datum, Zeit, Value) VALUES (%s, %s, %s, %s)',
(timestamp, datum, uhrzeit, energy_cam_value)
)
connection.commit()
except db.Error, e:
mysql_error_code = str(e.args[0])
mysql_error_message = str(e.args[1])
content = "Am " + datum + " ist um " + uhrzeit + " ein Fehler aufgetreten. \nEs konnte keine Verbindung zum Server hergestellt werden. \n\nFehlermeldung:\n" + mysql_error_message
send_email(content, mysql_error_code)
kill_script()
def main():
insert_into_database("123456789", "01:01:1990", "00:00:00", "100")
if __name__ == '__main__':
main()