Sunday, October 8, 2017

Re: django project avoid reload page where work algorithm

Hi.

For long running operatios celery tasks are pretty good choice. Celery can use rabbitmq as messaging queue so those two aren't mutually exclusive.

Once you have task running it is possible to use for example ajax polling to query status of the task and once complete inform end user that task is complete.

Or you can send email at the end of the task.

8.10.2017 1.37 ip. "Xristos Xristoou" <saxri89@gmail.com> kirjoitti:

hello

i need some help
I have a website where the user can be put three numbers on my html template and get some results from my personal mathematical algorithm. the result save at user personal table on my database and can see in specific tab in my website.

my problem is where the algorithm to calculate result maybe take time between 5-10 minutes in this time the browser stay on reload. if user change tab or close browser or maybe have problem with internet connection then loose that request and need again to put the numbers and again wait for results.

I want after the user request from my form in html to keep this request and work my algorithm without reload the page and where the algorithm finish then to send the user some email or message or just need the user visit the tab of results to see new results.

that I want to avoid the problems where the algorithm is in running and user loose data or request or time.

is easy to do that using suproccess,celery or RabbitMQ ?

any idea ?

here the code


views.py

def math_alg(request):      if request.method == "POST":          test = request.POST.get('no1')          test = request.POST.get('no3')          test = request.POST.get('no3')          #start algorith          calc_math(no1,no1,no3,result)          instance = rmodel.objects.create(user=request.user,rfield=result)          instance.save      return render(request, 'page.html', {'result': result})

html :

<form action="" method="POST">{% csrf_token %}    op math calculate:<br>    <input type="number" name="no1" step="any" min="0" max="1" value="0.5">    <input type="number" name="no2" step="any" min="0" max="1" value="9999">    <input type="number" name="no3" step="any" min="0" max="1" value="1000000000000000">  <br>    <input class="btn btn-primary" type="submit">  {{result }}  </form>

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/86fc72c5-6dcc-4734-8f1d-1e187b1d93f9%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAHn91oeHiSAp3_%2BTzv1U7hp8nX_hd98qEYRPh3gDOgse36B%3DVQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment