Skip to content

Commit 35bb3dd

Browse files
author
Matt George
committed
first steps towards resweb using flask
1 parent 5189970 commit 35bb3dd

File tree

11 files changed

+128
-1
lines changed

11 files changed

+128
-1
lines changed
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

resweb/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def __init__(self, host):
1414
self.resq = host
1515

1616
def media_folder(self):
17-
return '/media/'
17+
return '/static/'
1818

1919
def close(self):
2020
self.resq.close()

resweb/webapp.py

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
try:
2+
import json
3+
except ImportError:
4+
import simplejson as json
5+
6+
from base64 import b64decode
7+
from flask import Flask, g, request, redirect
8+
from pyres import ResQ, failure
9+
from flaskext.redis import Redis
10+
11+
app = Flask(__name__)
12+
db = Redis(app)
13+
from views import (
14+
Overview,
15+
Queues,
16+
Queue,
17+
Workers,
18+
Working,
19+
Failed,
20+
Stats,
21+
Stat,
22+
Worker,
23+
Delayed,
24+
DelayedTimestamp
25+
)
26+
27+
@app.route("/")
28+
def index():
29+
return Overview(ResQ(server=g.redis)).render()
30+
31+
@app.route("/working/")
32+
def working():
33+
return Working( ResQ(server=g.redis)).render()
34+
35+
@app.route("/queues/")
36+
def queues():
37+
return Queues( ResQ(server=g.redis)).render()
38+
39+
@app.route('/queues/<queue_id>/')
40+
def queue(queue_id):
41+
start = int(request.args.get('start',0))
42+
return Queue( ResQ(server=g.redis), queue_id, start).render()
43+
44+
@app.route('/failed/')
45+
def failed():
46+
start = request.args.get('start',0)
47+
start = int(start)
48+
return str(Failed( ResQ(server=g.redis), start).render())
49+
50+
@app.route('/failed/retry/', methods=['POST'])
51+
def failed_retry():
52+
failed_job = request.form['failed_job']
53+
job = b64decode(failed_job)
54+
decoded = ResQ.decode(job)
55+
failure.retry( ResQ(server=g.redis), decoded['queue'], job)
56+
return redirect('/failed/')
57+
58+
@app.route('/failed/delete/', methods=['POST'])
59+
def failed_delete():
60+
failed_job = request.form['failed_job']
61+
job = b64decode(failed_job)
62+
failure.delete( ResQ(server=g.redis), job)
63+
return redirect('/failed/')
64+
65+
@app.route('/failed/delete_all/')
66+
def delete_all_failed():
67+
#move resque:failed to resque:failed-staging
68+
g.redis.rename('resque:failed','resque:failed-staging')
69+
g.redis.delete('resque:failed-staging')
70+
return redirect('/failed/')
71+
72+
73+
@app.route('/failed/retry_all')
74+
def retry_failed(number=5000):
75+
failures = failure.all(ResQ(server=g.redis), 0, number)
76+
for f in failures:
77+
j = b64decode(f['redis_value'])
78+
failure.retry(ResQ(server=g.redis), f['queue'], j)
79+
return redirect('/failed/')
80+
81+
@app.route('/workers/(?P<worker_id>\w.+)/')
82+
def worker(worker_id):
83+
return str(Worker(ResQ(server=g.redis), worker_id).render())
84+
85+
@app.route('/workers/')
86+
def workers():
87+
return str(Workers(ResQ(server=g.redis)).render())
88+
89+
90+
91+
@app.route('/stats/<key>/')
92+
def stats(key):
93+
return str(Stats(ResQ(server=g.redis), key).render())
94+
95+
@app.route('/stats/')
96+
def stats_r():
97+
return redirect('/stats/resque/')
98+
99+
@app.route('/stat/(?P<stat_id>\w.+)')
100+
def stat(stat_id):
101+
return str(Stat(ResQ(server=g.redis), stat_id).render())
102+
103+
@app.route('/delayed/')
104+
def delayed():
105+
start = request.args.get('start',0)
106+
start = int(start)
107+
return str(Delayed(ResQ(server=g.redis), start).render())
108+
109+
@app.route('/delayed/<timestamp>')
110+
def delayed_timestamp(timestamp):
111+
start = request.args.get('start',0)
112+
start = int(start)
113+
return str(DelayedTimestamp(ResQ(server=g.redis), timestamp, start).render())
114+
115+
if __name__ == "__main__":
116+
app.run(debug=True)

0 commit comments

Comments
 (0)