From 053a6df7b9fbffaa29b00453007caf688ce8ac7a Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Wed, 1 Nov 2017 22:38:01 +0100 Subject: [PATCH] alternative approach --- rowers/longtask.py | 21 +++++++++++++++++++++ rowers/tasks.py | 6 ++++++ rowers/urls.py | 2 ++ rowers/views.py | 29 +++++++++++++++++++++++++++-- 4 files changed, 56 insertions(+), 2 deletions(-) diff --git a/rowers/longtask.py b/rowers/longtask.py index e0033967..a5387ada 100644 --- a/rowers/longtask.py +++ b/rowers/longtask.py @@ -10,6 +10,8 @@ redis_connection = StrictRedis() import redis import threading +import requests +from django.conf import settings def getvalue(data): perc = 0 @@ -55,4 +57,23 @@ def longtask(aantal,jobid=None,debug=False, + return 1 + +def longtask2(aantal,jobid=None,debug=False): + counter = 0 + + channel = 'tasks' + for i in range(aantal): + time.sleep(1) + counter += 1 + if counter > 10: + counter = 0 + if debug: + progress = int(100.*i/aantal) + if jobid != None: + url = settings.SITE_URL+"/rowers/record-progress/" + url += str(progress)+"/"+jobid + s = requests.get(url) + + return 1 diff --git a/rowers/tasks.py b/rowers/tasks.py index ae656006..7db9515b 100644 --- a/rowers/tasks.py +++ b/rowers/tasks.py @@ -52,6 +52,12 @@ def long_test_task(self,aantal,debug=False,job=None,session_key=None): return longtask.longtask(aantal,jobid=job.id,debug=debug, session_key=session_key) +@app.task(bind=True) +def long_test_task2(self,aantal,debug=False,job=None): + job = self.request + + return longtask.longtask2(aantal,jobid=job.id,debug=debug) + # create workout @app.task def handle_new_workout_from_file(r, f2, diff --git a/rowers/urls.py b/rowers/urls.py index f592717a..d3261e27 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -142,6 +142,8 @@ urlpatterns = [ url(r'^jobs-status/$',views.session_jobs_status), url(r'^job-kill/(?P.*)$',views.kill_async_job), url(r'^test-job/(?P\d+)$',views.test_job_view), + url(r'^test-job2/(?P\d+)$',views.test_job_view2), + url(r'^record-progress/(?P\d+)/(?P.*)$',views.post_progress), url(r'^list-graphs/$',views.graphs_view), url(r'^(?P\d+)/ote-bests/(?P\w+.*)/(?P\w+.*)$',views.rankings_view), url(r'^(?P\d+)/ote-bests/(?P\d+)$',views.rankings_view), diff --git a/rowers/views.py b/rowers/views.py index 6bc2274a..7b9114fa 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -100,7 +100,7 @@ from rowers.tasks import handle_makeplot,handle_otwsetpower,handle_sendemailtcx, from rowers.tasks import ( handle_sendemail_unrecognized,handle_sendemailnewcomment, handle_sendemailnewresponse, handle_updatedps, - handle_updatecp,long_test_task + handle_updatecp,long_test_task,long_test_task2 ) from scipy.signal import savgol_filter @@ -269,6 +269,7 @@ verbose_job_status = { 'otwsetpower': 'Rowing Physics OTW Power Calculation', 'make_plot': 'Create static chart', 'long_test_task': 'Long Test Task', + 'long_test_task2': 'Long Test Task 2', } def get_job_status(jobid): @@ -344,7 +345,31 @@ def test_job_view(request,aantal=100): return HttpResponseRedirect(url) - +@login_required() +def test_job_view2(request,aantal=100): + + + job = myqueue(queuehigh,long_test_task2,int(aantal)) + + + try: + request.session['async_tasks'] += [(job.id,'long_test_task2')] + except KeyError: + request.session['async_tasks'] = [(job.id,'long_test_task2')] + + url = reverse(session_jobs_status) + + return HttpResponseRedirect(url) + +def post_progress(request,id=None,value=0): + if id: + cache.set(id,value,3600) + + # test + result = cache.get(id) + + return HttpResponse('progress cached '+str(result),status=200) + def get_all_queued_jobs(userid=0): r = StrictRedis()