Files
oam/knowledge base/python.md
2022-04-17 23:00:26 +02:00

2.7 KiB

Python

String formatting

# f-strings
f"Hello, {name}. You are {age}."
F"{name.lower()} is funny."

Web servers

Flask

  • request.args gets query arguments
  • request.form gets POST arguments
from flask import request, jsonify

@app.route('/get/questions/', methods=['GET', 'POST','DELETE', 'PATCH'])
def question():
    if request.method == 'GET':
        start = request.args.get('start', default=0, type=int)
        limit_url = request.args.get('limit', default=20, type=int)
        data = [doc for doc in questions]
        return jsonify(
            isError = False,
            message = "Success",
            statusCode = 200,
            data= data
        ), 200
    if request.method == 'POST':
        question = request.form.get('question')
        topics = request.form.get('topics')
        return jsonify(
            isError = True,
            message = "Conflict",
            statusCode = 409,
            data = data
        ), 409

WSGI server

You can use waitress:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "<h1>Hello!</h1>"

if __name__ == "__main__":
    from waitress import serve
    serve(app, host="0.0.0.0", port=8080)
pip install flask waitress
python hello.py

Maintenance

# generate a list of all outdated packages
pip list --outdated

# upgrade all packages (oneliner)
pip install --requirement <(pip freeze | sed 's/==/>=/') --upgrade

# remove orphaned dependencies
# after installation of pip-autoremove
pip-autoremove

# upgrade onboard pip on mac os x
pip3 install --user --upgrade pip
echo 'export PATH="${HOME}/Library/Python/3.8/bin:${PATH}"' >> ${HOME}/.zprofile

Further readings