brauche hilfe bei einer funktion in meinem programm

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
__blackjack__
User
Beiträge: 14076
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@sleex: Du musst das Programm halt so schreiben, dass es sich nach ein paar Sekunden schliesst. Also merken wann der Startzeitpunkt ist, und dann regelmässig schauen ob seit dem ein paar Sekunden vergangen sind und gegebenenfalls aufhören das zu machen was das Programm halt so macht. Mehr kann man da so allgemein nicht zu sagen. Falls Du `trio` benutzt hilft das hier vielleicht weiter:

Code: Alles auswählen

#!/usr/bin/env python3
import random

import trio


async def main():
    some_seconds = random.randint(1, 10)
    with trio.move_on_after(some_seconds):
        while True:
            print("something")
            await trio.sleep(1)

    print("Bye")


if __name__ == "__main__":
    trio.run(main)
Falls Du `trio` nicht benutzt, hilft das überhaupt nicht. 🤡

Welches Problem willst Du denn *eigentlich* lösen?
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Deine Beschreibung ist etwas holperig.
Code setzt man in Code-Tags.

Warum steht da etwas von Error, wenn die Übertragung doch erfolgreich war?
Kommt mir ein bisschen seltsm vor, was dein "Freund" da so treibt.
Sirius3
User
Beiträge: 18278
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn Du einfach nur warten möchtest, dann ist time.sleep das Mittel der Wahl. Bei bind sind eigentlich nur 127.0.0.1 oder 0.0.0.0 sinnvolle Werte, nicht aber die eigene IP-Adresse.
s ist ein schlechter Variablenname, weil nichtssagenden. server_socket wäre da besser. recv funktioniert nicht so, wie Du denkst. Da fehlt ein Protokoll, das beschreibt was eine Nachricht ist. Ebenso ist send falsch. Da wird nicht garantiert dass alles gesendet wird.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Denkst du nur. Man kann auch verbundenen Auges ueber die Strasse rennen, und dabei keinen Unfall haben. Heisst aber nicht, dass es sich dabei um das richtige Vorgehen handelt. Netzwerk ist komplexer, als dein Code es annimmt. Weder ist garantiert, das alle Daten bei send wirklich verschickt werden, noch ist es garantiert, dass alle Daten als ein Paket genauso ankommen, wie sie versandt wurden. Die koennen in beliebig zerteilten Haeppchen ankommen.
Antworten