2017-01-09 2 views
0
  1. Ich benutze web.py, um eingehende Daten mit "GET" und "POST" -Methode zu verarbeiten und verwendet app.run(). Dieses Aussehen wird in Schleife laufen und niemals aufhören.Wie starte ich einen Hintergrundjob in web.py?

  2. Ich habe auch einen Hintergrund-Job, der Port "9xxx" erkennen und die eingehenden Daten verarbeiten, senden Sie die Nachricht an andere Server, um msg an Telefon zu schieben. Ich benutze auch eine while (true) Schleife um dies zu tun.

Wie (2) in (1) zu integrieren? Ich bin verwirrt.

Ich plante Run (1) und (2) unabhängig, aber es gibt Datenaustausch so nicht Bequemlichkeit zu Code. Wie machen Sie web.py Benutzer diese ähnlichen Dinge?

+0

Jetzt habe ich festgestellt, dass es vielleicht keine Möglichkeit gibt, Hintergrund-Jobs unter dem web.py-Framework auszuführen. Verwenden Sie einfach Multiprocessing, um Hintergrundjobs zu starten, und verwenden Sie die Warteschlange, um Nachrichten zwischen web.py (oder uwsgi + nginx usw. zu verarbeiten. Meine Aufgabe ist klein, ich wollte nur web.py verwenden) und Hintergrundjobs zu verwenden. –

Antwort

0

Ich denke, das ist, was Sie wollen:

nohup python web.py > web.log 2>&1 & 

Check out nohup wiki und man page

In der Produktion, würde Ich mag mit uwsgi und nginx.You kombinieren web.py this lesen können und ein Versuch. Und dann benutze ich supervisord, um Server neu zu starten, nachdem sie beenden.

+0

Danke! Mein Fall ist, dass das Programm (2) nicht GET oder POST hat, sondern ein anderes benutzerdefiniertes Format (natürlich tcp/ip und socket verwenden). es kommuniziert mit einem entfernten Gerät, das Daten an den Server sendet. Ich mache bereits den Server kann die Daten hören und bekommen, aber verwendet eine While (True) -Schleife zum Lesen/Schreiben von Daten. Aber es scheint keine gute Idee zu sein, es einfach mit web.py zu betreiben, was auch application.run() .... –

+0

Ihre Antwort ist hilfreich! Auch mit Python Multiprocessing habe ich dieses Problem behoben. Verwenden Sie Multiprocessing, um 2 Aufgaben zu starten, die andere Ports abhören, um etwas zu tun, und app.run, um 80 Port-POST/GET-Nachrichten in web.py zu verarbeiten. Verwenden Sie dann nohup, um sie auszuführen. Vielen Dank! –

+0

@NickQian Wenn dies hilft, bitte akzeptieren Sie diese Antwort. – McGrady