diff options
author | Pjotr Prins | 2021-08-07 12:06:49 +0200 |
---|---|---|
committer | Pjotr Prins | 2021-08-07 12:06:49 +0200 |
commit | e0476d51603432f60b6412b65486166deabe9e08 (patch) | |
tree | d201eb44bb0490dfeb3e9d87386adc866591db54 | |
parent | 33700066452e3c5f341b790f015f85fb976d06be (diff) | |
download | genenetwork3-e0476d51603432f60b6412b65486166deabe9e08.tar.gz |
Add gunicorn support for production
-rw-r--r-- | README.md | 23 | ||||
-rw-r--r-- | gn3/api/general.py | 3 | ||||
-rw-r--r-- | guix.scm | 3 | ||||
-rw-r--r-- | main.py | 6 | ||||
-rw-r--r-- | wsgi.py | 11 |
5 files changed, 42 insertions, 4 deletions
@@ -61,12 +61,33 @@ mypy . #### Running the flask app -To spin up the server: +To spin up the server on its own (for development): ```bash env FLASK_DEBUG=1 FLASK_APP="main.py" flask run --port=8080 ``` +And test with + +``` +curl localhost:8080/api/version +"1.0" +``` + +To run with gunicorn + +``` +gunicorn --bind 0.0.0.0:8080 wsgi:app +``` + +consider the following options for development `--bind 0.0.0.0:$SERVER_PORT --workers=1 --timeout 180 --reload wsgi`. + +And for the scalable production version run + +``` +gunicorn --bind 0.0.0.0:8080 --workers 8 --keep-alive 6000 --max-requests 10 --max-requests-jitter 5 --timeout 1200 wsgi:app +``` + ##### Using python-pip IMPORTANT NOTE: we do not recommend using pip tools, use Guix instead diff --git a/gn3/api/general.py b/gn3/api/general.py index cebb2e3..86fb7b7 100644 --- a/gn3/api/general.py +++ b/gn3/api/general.py @@ -11,6 +11,9 @@ from gn3.commands import run_cmd general = Blueprint("general", __name__) +@general.route("/version") +def version(): + return jsonify("1.0") @general.route("/metadata/upload/", methods=["POST"], strict_slashes=False) @@ -82,8 +82,9 @@ #:recursive? #t #:select? git-file?)) (propagated-inputs `(("coreutils" ,coreutils) - ("gemma-wrapper" ,gemma-wrapper) ("csvdiff" ,go-github-com-aswinkarthik-csvdiff) + ("gemma-wrapper" ,gemma-wrapper) + ("gunicorn" ,gunicorn) ("python" ,python-wrapper) ("python-bcrypt" ,python-bcrypt) ("python-flask" ,python-flask) @@ -2,6 +2,8 @@ from gn3.app import create_app - app = create_app() -app.run(host="0.0.0.0") + +if __name__ == '__main__': + print("Starting app...") + app.run() @@ -0,0 +1,11 @@ +# import main + +print("STARTING WSGI APP") + +from gn3.app import create_app + +app = create_app() + +if __name__ == "__main__": + print("Starting wsgi app...") + app.run() |