/
run.py
122 lines (87 loc) · 3.26 KB
/
run.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#--------------------------------------------------------------
# Application : Connecthys, le portail internet de Noethys
# Site internet : www.noethys.com
# Auteur: Ivan LUCAS
# Copyright: (c) 2010-16 Ivan LUCAS
# Licence: Licence GNU GPL
#--------------------------------------------------------------
u"""
USAGE :
'python run.py -s <serveur> -h <host> -p <port>'
Vous pouvez lancer simplement 'python run.py' pour démarrer le serveur
web intégré à Connecthys.
-- Choix du serveur --
Attention, ce serveur n'est pas très puissant et ne convient pas
forcément à un usage en production. Vous pouvez également utiliser
un des autres serveurs supportés :
Tornado peut permettre à Connecthys de supporter plusieurs milliers
de connexions simultanées. Tapez "pip install tornado" pour l'installer.
Puis il suffit de taper 'python run.py -s tornado' pour lancer Connecthys
en utilisant tornado.
Gevent est également une alternative. Tapez "pip install gevent" pour
l'installer. Puis tapez 'python run.py -s gevent' pour lancer Connecthys
en utilisant gevent.
-- Choix de l'hôte --
host='0.0.0.0': écoute sur toutes les interfaces réseaux de la machine (y compris loopback)
host='192.168.0.1': écoute sur l'interface ayant l'IP 192.168.0.1 uniquement
host='127.0.0.1': écoute uniquement sur l'interface loopback
host non défini: écoute uniquement sur l'interface loopback
-- Choix du port --
Par défaut 5000
"""
import sys, getopt
import imports
# Vérification des arguments
try:
opts, args = getopt.getopt(sys.argv[1:], "s:h:p:", ["serveur=", "host=", "port="])
except getopt.GetoptError:
print("run.py -s <serveur> -h <host> -p <port>")
print("serveur = None | tornado | gevent")
print("host = 127.0.0.1")
print("port = 5000")
sys.exit(2)
# Serveur = None (serveur intégré à Flask) | tornado | gevent
serveur = None
# Le port peut être modifié librement
port = 5000
# Choix de l'hôte
host = "0.0.0.0"
# Lecture des arguments
for opt, arg in opts:
if opt in ("-s", "--serveur"):
serveur = arg
if opt in ("-h", "--host"):
host = arg
if opt in ("-p", "--port"):
port = int(arg)
print("Lancement de Connecthys...")
print("serveur=%s host=%s port=%s" % (serveur, host, port))
# Ajoute au path le chemin des librairies
imports.AjouteCheminLibs()
# Activation du SSL/TLS
#import ssl
#context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
#context.load_cert_chain('path/mon_certificat.crt', 'path/mon_certificat.key')
# Chargement de l'application
from application import app
# Lancement du serveur
if "tornado" in sys.argv :
# Serveur Tornado
# Installation préalable : "pip install tornado"
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
http_server = HTTPServer(WSGIContainer(app))
http_server.listen(port)
IOLoop.instance().start()
elif "gevent" in sys.argv :
# Serveur Gevent
# Installation préalable : "pip install gevent"
from gevent.wsgi import WSGIServer
http_server = WSGIServer(('', port), app)
http_server.serve_forever()
else :
# Serveur intégré à Flask
app.run(host=host, port=port, debug=False)