Ceci est l'article du 9ème jour de Advent Calender sur le serveur de code 2019. Cette fois aussi, j'expliquerai ce qu'est le serveur de code?
(1) Qu'est-ce que le serveur de code? (2) Créez votre propre environnement de serveur de code avec Docker (3) Essayez d'utiliser le plug-in de VSCode (4) Préparons un environnement MVC comprenant DB etc. (1) (5) Préparons un environnement MVC comprenant DB etc. (2) (6) Préparons un environnement MVC comprenant DB etc. (3) (7) Préparons un environnement MVC comprenant DB etc. (4) (8) Préparons un environnement MVC comprenant DB etc. (5) (9) Préparons un environnement MVC comprenant DB etc. (6) (10) Bonus
(SUIVANT->) Version de l'environnement en ligne 1er jour Améliorer l'environnement de travail
(..) Pour construire localement, y compris l'environnement tel que DB (..) Comment le mettre en ligne? (..) Comment travailler avec le dernier environnement à la mode tel que K8S? (..) Je veux modifier Code-Server pour l'améliorer
À partir de la dernière fois, nous ajouterons des API à l'aide de flask.
Modifions le flacon précédemment créé
main.py
from flask import Flask, request as fl_request, Request
from typing import Dict
import json
import logging
app = Flask(__name__)
logger = logging.getLogger("XXX")
logging.basicConfig(level=logging.DEBUG)
@app.route("/users")
def get_user_from_id():
request:Request = fl_request
input:Dict = request.args
logger.debug("> input: {}".format(input))
user:Dict = {
"name":"one",
"email":"[email protected]",
"id":1}
return json.dumps(user)
app.run("0.0.0.0",port=8080)
Si un ID est passé en tant que «http: //0.0.0.0/users? Id = 1», les informations utilisateur correspondant à cet ID seront renvoyées.
Essayez de démarrer le flacon.
$ python main.py
* Serving Flask app "main" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
INFO:werkzeug: * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
Ouvrez un nouveau terminal et appuyez sur la commande curl
$ curl 127.0.0.1:8080/users?id=1
{"name": "one", "email": "[email protected]", "id": 1}
Oups, des informations sur l'utilisateur ont été fournies.
Cette fois, j'utilise le package de jeu de données pour faire fonctionner db à partir de python. https://github.com/pudo/dataset
$ pip install dataset
Puisque mysql est utilisé, ajoutez le package mysqlclient.
$ pip install mysqlclient
main.py
from flask import Flask, request as fl_request, Request
from typing import Dict
import json
import dataset
import logging
app = Flask(__name__)
logger = logging.getLogger("XXX")
logging.basicConfig(level=logging.DEBUG)
db:dataset.Database = dataset.connect('mysql://root:passwd@mysqld/app_db')
@app.route("/users")
def get_user_from_id():
request:Request = fl_request
input:Dict = request.args
logger.debug("> input: {}".format(input))
users_table:dataset.Table = db.get_table("users")
user:Dict = users_table.find_one(id=int(input["id"]))
return json.dumps(user)
app.run("0.0.0.0", port=8080)
Vous vous connectez à la base de données avec dataset.connect
et obtenez des informations utilisateur avec ʻusers_table.find_one`.
Essayez de démarrer le flacon.
$ python main.py
* Serving Flask app "main" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
INFO:werkzeug: * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
Ouvrez un nouveau terminal et appuyez sur la commande curl
$ curl 127.0.0.1:8080/users?id=1
{"name": "one", "email": "[email protected]", "id": 1}
Oups, des informations sur l'utilisateur ont été fournies.
PS
Créons requirements.txt !!
Il est courant de conserver les packages python dans un fichier. https://pip.readthedocs.io/en/1.1/requirements.html
pip install -r requirements.txt
-r Ajouter et exécuter des options de ligne de commande.
requirements.txt
Flask==1.1.1
dataset==1.1.2
mysqlclient==1.4.6
Vous pouvez également écrire une liste de packages dépendants dans un fichier avec pip freeze> requirements_lock.txt
.
Dans Flask, essayez d'ajouter un utilisateur. En outre, je prévois de terminer la version de l'environnement local dans environ deux fois et d'entrer la version de l'environnement en ligne et la version de remodelage magique.
PS La source https://github.com/kyorohiro/advent-2019-code-server
Recommended Posts