* update dockerfile
parent
412239515d
commit
bba8c0719c
|
|
@ -2,9 +2,7 @@ FROM alpine:edge
|
|||
|
||||
ADD ["requirements.txt", "/"]
|
||||
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing/" >> /etc/apk/repositories && \
|
||||
sed -i 's/numpy/#numpy/' requirements.txt && \
|
||||
sed -i 's/scipy/#scipy/' requirements.txt && \
|
||||
apk add --update libpng libpng-dev freetype freetype-dev g++ python3 py3-numpy python3-dev py-numpy-dev py3-scipy&& \
|
||||
pip3 install -r requirements.txt && \
|
||||
apk del libpng-dev freetype-dev g++ python3-dev py-numpy-dev && \
|
||||
apk add --update --no-cache libpng libpng-dev freetype freetype-dev g++ python3 python3-dev libstdc++ openblas-dev && \
|
||||
pip3 --no-cache-dir install -r requirements.txt && \
|
||||
apk del libpng-dev freetype-dev g++ python3-dev openblas-dev && \
|
||||
rm requirements.txt
|
||||
|
|
@ -69,7 +69,8 @@ def get_json(source, url):
|
|||
data = source.get(url).json()
|
||||
|
||||
except Exception as e:
|
||||
print("exception", e, e.args) # TODO: logging
|
||||
print("exception", e, e.args)
|
||||
logger.exception(e)
|
||||
data = None
|
||||
cache[url] = data
|
||||
return data
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
version: "3"
|
||||
version: "2.2"
|
||||
|
||||
services:
|
||||
app:
|
||||
image: docker.clkl.de/ma/celery:0.1
|
||||
build: .
|
||||
image: docker.clkl.de/ma/celery:0.3.3
|
||||
build: ./selector
|
||||
cpu_count: 4
|
||||
volumes:
|
||||
- ./:/app
|
||||
working_dir: /app/selector
|
||||
|
|
@ -20,8 +21,7 @@ services:
|
|||
- "traefik.url.frontend.rule=Host:select.ma.potato.kinf.wiai.uni-bamberg.de"
|
||||
|
||||
celery:
|
||||
image: docker.clkl.de/ma/celery:0.1
|
||||
build: .
|
||||
image: docker.clkl.de/ma/celery:0.3.3
|
||||
environment:
|
||||
- PYTHONPATH=/app
|
||||
volumes:
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
requests==2.18.4
|
||||
numpy==1.13.1
|
||||
numpy==1.14.2
|
||||
matplotlib==2.1.0
|
||||
#osmnx==0.6
|
||||
networkx==2.0
|
||||
#pydot==1.2.3
|
||||
scipy==1.0.0
|
||||
scipy==1.0.1
|
||||
#ipython==6.2.1
|
||||
|
||||
flask==0.12.2
|
||||
|
|
|
|||
|
|
@ -126,3 +126,8 @@ CONFIGS = { # TODO
|
|||
"KML": KML,
|
||||
"ActivityMapper": ACTIVITY,
|
||||
}
|
||||
|
||||
URLS = {
|
||||
"KML": "/",
|
||||
"ActivityMapper": "#",
|
||||
}
|
||||
|
|
@ -21,21 +21,5 @@
|
|||
<input type="submit">
|
||||
|
||||
</form>
|
||||
|
||||
<div id="results">
|
||||
<ul>
|
||||
{% for job in jobs %}
|
||||
<li> {{jobs[job].status}}: "{{job}}":
|
||||
<ul>
|
||||
{% for r in jobs[job].results %}
|
||||
<li><a href="{{r | get_url}}">{{r|get_name}}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<a href="/results">show analysis progress/results</a>
|
||||
{% endblock %}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
{% extends "base.html" %}
|
||||
{% block body %}
|
||||
|
||||
<a href="/games">create new analysis</a>
|
||||
|
||||
<div id="results">
|
||||
<ul>
|
||||
{% for job in jobs %}
|
||||
<li> {{jobs[job].status}}: "{{job}}":
|
||||
<ul>
|
||||
{% for r in jobs[job].results %}
|
||||
<li><a href="{{jobs[job] | get_prefix}}{{r | get_name}}">{{r|get_name}} {{jobs[job].start}}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
|
@ -10,9 +10,10 @@ from clients.webclients import Client, CLIENTS
|
|||
from flask import Flask, render_template, request, redirect, session
|
||||
|
||||
from tasks import tasks
|
||||
from selector.temp_config import CONFIGS
|
||||
from selector.temp_config import CONFIGS, URLS
|
||||
|
||||
BIOGAMES_HOST = "http://biogames.potato.kinf.wiai.uni-bamberg.de"
|
||||
#BIOGAMES_HOST = "http://www.biodiv2go.de"
|
||||
RESULT_HOST = "http://results.ma.potato.kinf.wiai.uni-bamberg.de/"
|
||||
|
||||
app = Flask(__name__)
|
||||
|
|
@ -29,7 +30,7 @@ def index():
|
|||
def login():
|
||||
game = request.form["game"]
|
||||
if not game in CLIENTS:
|
||||
return redirect("/")
|
||||
return redirect("/?invalid_game")
|
||||
client = CLIENTS[game](host=BIOGAMES_HOST, username=request.form['username'], password=request.form['password'])
|
||||
if client.login():
|
||||
session['logged_in'] = True
|
||||
|
|
@ -39,12 +40,12 @@ def login():
|
|||
session['game'] = game
|
||||
session['host'] = BIOGAMES_HOST
|
||||
clients[session['uid']] = client
|
||||
return redirect("/games")
|
||||
return redirect("/")
|
||||
return redirect("/results")
|
||||
return redirect("/?fail")
|
||||
|
||||
|
||||
@app.route("/games")
|
||||
def games():
|
||||
@app.route("/results")
|
||||
def results():
|
||||
if not ('logged_in' in session and session['logged_in']):
|
||||
return redirect("/")
|
||||
if session['logged_in'] and not session['uid'] in clients:
|
||||
|
|
@ -54,7 +55,21 @@ def games():
|
|||
job_status = json.loads(status)
|
||||
else:
|
||||
job_status = {}
|
||||
return render_template("games.html", logs=clients[session['uid']].list(), configs=CONFIGS, jobs=job_status)
|
||||
#for job in job_status:
|
||||
# results = []
|
||||
# for path in job_status[job]['results']:
|
||||
# results.append(path.replace(tasks.DATA_PATH, RESULT_HOST))
|
||||
# print(results) #TODO???
|
||||
return render_template("results.html", jobs=job_status)
|
||||
|
||||
|
||||
@app.route("/games")
|
||||
def games():
|
||||
if not ('logged_in' in session and session['logged_in']):
|
||||
return redirect("/")
|
||||
if session['logged_in'] and not session['uid'] in clients:
|
||||
clients[session['uid']] = CLIENTS[session['game']](host=session['host'], **session['cookies'])
|
||||
return render_template("games.html", logs=clients[session['uid']].list(), configs=CONFIGS)
|
||||
|
||||
|
||||
@app.route("/start", methods=['POST'])
|
||||
|
|
@ -77,7 +92,7 @@ def start():
|
|||
}
|
||||
tasks.status_update(session['username'], request.form['name'], status)
|
||||
tasks.analyze.delay(**params)
|
||||
return redirect("/games")
|
||||
return redirect("/results")
|
||||
|
||||
|
||||
@app.route("/status")
|
||||
|
|
@ -94,6 +109,16 @@ def get_url(path: str):
|
|||
return path.replace(tasks.DATA_PATH, "")
|
||||
|
||||
|
||||
@app.template_filter('get_prefix')
|
||||
def get_prefix(job):
|
||||
print(job)
|
||||
try:
|
||||
return RESULT_HOST + URLS[job['config']]
|
||||
except:
|
||||
return RESULT_HOST + "#"
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.config.update({"SECRET_KEY": "59765798-2784-11e8-8d05-db4d6f6606c9"})
|
||||
app.run(host="0.0.0.0", debug=True)
|
||||
|
|
|
|||
Loading…
Reference in New Issue