-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathapp.py
More file actions
35 lines (31 loc) · 990 Bytes
/
app.py
File metadata and controls
35 lines (31 loc) · 990 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import os
from flask import Flask, request, jsonify
from rq import Queue
from worker import conn
from utils import count_words_at_url
app = Flask(__name__)
q = Queue(connection=conn)
def get_status(job):
status = {
'id': job.id,
'result': job.result,
'status': 'failed' if job.is_failed else 'pending' if job.result == None else 'completed'
}
status.update(job.meta)
return status
@app.route("/")
def handle_job():
query_id = request.args.get('job')
if query_id:
found_job = q.fetch_job(query_id)
if found_job:
output = get_status(found_job)
else:
output = { 'id': None, 'error_message': 'No job exists with the id number ' + query_id }
else:
new_job = q.enqueue(count_words_at_url, 'http://heroku.com')
output = get_status(new_job)
return jsonify(output)
if __name__ == "__main__":
port = int(os.environ.get("PORT", 5000))
app.run(host='0.0.0.0', port=port)