Autore: Fabio Di Matteo
Ultima revisione: 18/12/2018 - 10:09
Il nostro script di esempio lancia un banale webserver all'indirizzo http://localhost:8081 .
httpd.py
#!/usr/bin/env python3 from http.server import BaseHTTPRequestHandler, HTTPServer # HTTPRequestHandler class class testHTTPServer_RequestHandler(BaseHTTPRequestHandler): # GET def do_GET(self): # Send response status code self.send_response(200) # Send headers self.send_header('Content-type','text/html') self.end_headers() # Send message back to client message = "Hello world from python service!" # Write content as utf-8 data self.wfile.write(bytes(message, "utf8")) return def run(): print('starting server...') # Server settings # Choose port 8080, for port 80, which is normally used for a http server, you need root access server_address = ('127.0.0.1', 8081) httpd = HTTPServer(server_address, testHTTPServer_RequestHandler) print('running server...') httpd.serve_forever() run()
Lo script deve essere lanciato da un eseguibile nativo, altrimenti non funziona (Testato su Windows7). Dunque creiamo il nostro lanciatore :
#include <stdio.h> #include <stdlib.h> int main(int argc, char** argv) { system("C:\\msys64\\mingw64\\bin\\python3.exe c:\\httpd.py"); return 0; }
Compiliamo il nostro lanciatore . Io uso msys2 su Windows:
gcc myservice.c -o PythonApp.exe
Posizioniamo per comodita' i due file (httpd.py e PythonApp.exe) in C:\
Fatto cio' non ci resta altro che avviare un terminale di windows (cmd.exe) come amministratore e impartire il seguente comando:
sc create PythonApp binPath= "C:\PythonApp.exe" displayname= "Python http example" depend= tcpip start= auto
Se volessimo eliminare il servizio:
sc delete PythonApp
E' necessario riavviare il sistema per far partire il servizio.
Scarichiamo nssm, un piccolo eseguibile che non richiede installazione e impartiamo i seguenti comandi da amministratore:
nssm.exe install PythonApp "C:\Program Files\Python37\python.exe" "C:\Users\Admin\Desktop\webserver.py"
possiamo poi avviare il servizio con :
nssm.exe start PythonApp
oppure modificarlo (Gui):
nssm.exe edit PythonApp
o eliminarlo:
nssm.exe remove PythonApp
Il nostro wiki installa solamente cookie tecnici necessari al funzionamento della piattaforma "Dokuwiki". Niente analitics, statistiche, tracciamenti o altro.