L'unité NGINX a été publiée et je pense qu'elle peut être utilisée comme serveur d'application qui exécute WSGI pour Python. J'ai essayé de déplacer Hello World pour le moment.
Installez la version du package ubuntu référencée ici. https://github.com/nginx/unit#ubuntu-packages
Et commencer
$ sudo service unitd start
Créez une application python avec wsgi. Placez simplement un fichier appelé wsgi.py dans le chemin spécifié et suivez le style wsgi. Vous pouvez le faire avec wsgi, vous pouvez donc utiliser n'importe quel framework.
wsgi.py
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
return ['Hello World\n'.encode('utf-8')]
Au lieu de modifier le fichier placé, il est utilisé comme une notification du paramètre avec l'API, décrivez donc le fichier de paramètre et téléchargez-le pour refléter le paramètre.
start.json
{
"applications": {
"hello": {
"type": "python",
"workers": 2,
"path": "/home/ubuntu",
"module": "wsgi"
}
},
"listeners": {
"*:8400": {
"application": "hello"
}
}
}
L'API de contrôle atteint l'API avec un socket unix. Voir: https://github.com/nginx/unit#configuration
Téléchargez le fichier de paramètres décrit avec curl et réfléchissez-le.
$ sudo curl -X PUT -d @start.json --unix-socket /var/run/control.unit.sock http://localhost/
Ou bien, l'installation du package d'ubuntu a un script qui fait cela, donc c'est facile à utiliser.
$ sudo service unitd restoreconfig start.json
Vous pouvez obtenir les paramètres en demandant avec GET.
$ sudo curl --unix-socket /var/run/control.unit.sock http://localhost/
{
"applications": {
"hello": {
"type": "python",
"workers": 2,
"path": "/home/ubuntu",
"module": "wsgi"
}
},
"listeners": {
"*:8400": {
"application": "hello"
}
}
}
Comme unitd n'a pas de fichier de paramètres, il doit être reflété à chaque redémarrage.
J'ai configuré l'application pour qu'elle fonctionne sur le port 8400, j'ai donc fait une requête HTTP avec curl et j'ai obtenu le résultat.
$ curl http://localhost:8400/
Hello World
Par rapport à uWSGI, etc., les fonctions sont extrêmement petites, mais elles pourraient devenir multifonctionnelles à l'avenir. Sera-t-il utilisé dans virtualenv / venv à l'avenir?
Recommended Posts