Python Skript als Systemctl Service: Was beachten?

Hallo, ich habe ein paar grundlegende Fragen darüber wie genau die Systemctl Services unter Linux (Ubuntu Server ohne GUI) funktionieren.

Hintergrund: Ich habe ein Pyhton Skript, welches innerhalb einer virtuellen Python Umgebung fehlerfrei funktioniert und das macht was es soll (sich als Client auf einem MQTT Server anmelden und Daten in einen SQL Server schreiben). Das Skript soll beim Hochfahren des entsprechenden PCs immer automaisch im Hintegrund ausgeführt werden, dafür möchte ich das ganze als Systemctl Service benutzen. Wenn ich das Skript aber als Service anlege funktioniert es nicht mehr (Daten werden nicht gespeichert) und ich habe nicht wirklich Ideen wie ich mein Problem debuggen soll, da auch der Log vom Service nicht auffällig ist. Dort steht immer nur Service Start Successfull beim Hochfahren und Service Stop beim Runterfahren, aber keine Fehlermeldungen oder der gleichen.

2 Ich habe letztendlich 2 Fragen zum generellen Verständnis, die mich hoffentlich meinem Fehler ein Stückchen näher bringen würden:

  1. Wo müssen verwendete Python Module installiert sein? Bzw. wie kann man den Ort, an dem Systemctl nach den Modulen schaut angezeigt und verändert werden?
  2. Innerhalb des Skripts nutze ich die Client.loopforever() Funktion aus dem paho-mqtt Modul, d.h. wird das Skript einmal gestartet, läuft es ohne jemals zu enden. Ist diese Charakteristik problematisch innerhalb des Service Kontextes? Ruft der Service das Skript periodisch auf und könnte ich mir somit einen solchen Dauerloop sparen? Und wenn das so ist, kann man die Periode der Skriptaufrufe anpassen?
Server, Linux, Service, Ubuntu, Python, SQL-Server, Ubuntu Server
Python: Wieso kann ich nur eine Nachricht über die Socketverbindung senden?

Moin alle zusammen,

ich habe folgende Frage:

Ich habe zwei Python-Dateien geschrieben:

Client.py:

import socket

W = '\033[0m' # white
R = '\033[31m' # red
G = '\033[32m' # green
O = '\033[33m' # orange
B = '\033[34m' # blue
P = '\033[35m' # purple

def excp():
  print(R+"Es ist ein Fehler aufgetreten!"+W)
   
client = socket.socket()
client.connect((ip, port))
used = []

while True:
  command = str(input("Nachricht: "))
  used.append(command)
  command = command.encode()
  client.send(command)
  msg = client.recv(1024).decode()
  print(msg)
  print(used)

Port und IP sind natürlich definiert.

Server.py:

import socket

W = '\033[0m' # white
R = '\033[31m' # red
G = '\033[32m' # green
O = '\033[33m' # orange
B = '\033[34m' # blue
P = '\033[35m' # purple

def excp():
  print(R+"Es ist ein Fehler aufgetreten!"+W)
  
def sendOutput(msg):
  client.sendto(str(msg).encode(), (ip, port))
 
server = socket.socket()
server.bind((ip, port))
server.listen(1)

while True:
  client, client_addr = server.accept()
  print(f" {client_addr} Client wurde mit dem Server verbunden") 
  msg = client.recv(1024).decode()
  print(msg)

sendOutput(msg)

Das funktioniert auch alles. Nur kann ich vom Client aus nur eine Nachricht schicken, bei der Zweiten kommt nichts mehr beim Server an und auch nicht wieder zurück. Was ist denn falsch?

Vielen Dank im Voraus. :)

Python, Python 3, Socket
Braucht man unbedingt ein (Fach-)Abitur oder gar ein Studium in Informatik um Softwareentwickler zu werden?

Moin

In meinem Fall habe ich einen guten bis sehr guten Realschulabschluss absolviert. Ich möchte eigentlich nur wissen, ob man überhaupt mit diesem Abschluss ordentlich und ohne Schwierigkeiten in die Softwareentwicklung einsteigen sollte bzw. eine Ausbildung starten könnte. Google und Jobbörsen spucken da jedes mal etwas anderes aus. Desto länger ich nach einer Antwort gesucht habe, desto verwirrter wurde ich.

Kurz zu mir selbst: Ich interessiere mich schon länger für die Programmierung allgemein und habe auch bereits Python + Java ausprobiert. Ich bin erstmal bei Java geblieben, da mir die Komplexität und vielfältigen Möglichkeiten auf verschiedenen Plattformen dort einfach mehr zusagen. Der Wille in einem Team zu arbeiten ist auch da, deshalb tendiere ich eher zur Softwareentwicklung als zum Freelancen ganz alleine.

Hoffe auf aufschlussreiche Antworten von allen Fronten :)

EDIT:

Danke schonmal für die vielen Antworten! Ich selbst habe nochmal weitergesucht und bin auf diese Seite hier gestoßen. War ebenfalls hilfreich und evtl. hilft die jemandem der in meiner Situation steckt.

https://www.gfn.de/lp-fachinformatik-an-0122-le-aw/?utm_source=aw&utm_medium=cpc&utm_campaign=02_FIAE&utm_content=fiae&utm_term=e_fachinformatiker%20f%C3%BCr%20anwendungsentwicklung&gclid=Cj0KCQjwmouZBhDSARIsALYcoupVK2wbYdU6wzfIwTEjZGneG2UfseeKyATgsl7C-z4Rh_SaBQZUTCoaArrpEALw_wcB

Beruf, Berufswahl, Java, Programmiersprache, Python, Softwareentwickler

Meistgelesene Fragen zum Thema Python