sql >> Databasteknik >  >> NoSQL >> Redis

Django - Hur man använder asynkron uppgiftskö med selleri och redis

Som sagt tidigare kanske du inte behöver selleri. Här är ett exempel härlett från fall 2 av detta:https://zapier.com/blog/async-celery-example-why-and-how/. Det fungerar fullt ut för mig:

from time import sleep
import json
from django.http import HttpResponse
from django.shortcuts import render

def main_view(request):
    return render(request, 'index.html')

def ajax_view(request):
    sleep(10) #This is whatever work you need
    pi1 = "This is pi1" #I just made pi1/pis1 random values
    pis1 = "This is pis1"
    context = {
        "pi1" : pi1,
        "pis1" : pis1,
    }
    data = json.dumps(context)

    return HttpResponse(data, content_type='application/json')

Min index.html innehåller:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Main View</title>
    <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
    <script>
    $(document).ready(function(){
        $.ajax({
            url: "/test_ajax/",
        }).done(function( data) {
            $("#pi1").text(data.pi1);
            $("#pis1").text(data.pis1); 
        });
    });
</script>
  </head>
  <body>
      <h1 id = "pi1">Loading</h1>
      <h1 id = "pis1">Loading</h1>
  </body>
</html>

Och min urls.py innehåller:

from django.conf.urls import include, url
from django.contrib import admin
from testDjango.test import main_view, ajax_view

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^test/', main_view),
    url(r'^test_ajax/', ajax_view)
]

Vad som händer när jag besöker localhost:8000/test/ är att jag direkt se:

Efter cirka 10 sekunder ser jag sedan:

Tanken är att du returnerar din sida direkt och använder jquery för att hämta resultatet av operationen när den är klar och uppdatera din sida därefter. Du kan lägga till fler saker som förloppsindikatorer/laddning av bild etc. För ditt exempel kan du göra bearbetningen för pi1 och pis i bakgrunden och ladda in den i HTML-koden när det är klart.



  1. Konvertera MongoDB BsonDocument till giltig JSON i C#

  2. Spring Data RedisMall:Serialisera värdet och HashValue

  3. Hur man ogiltigförklarar delar av en hierarki (träd) av data i Redis cache

  4. Ordningsföljd för svar på MongoDB $i fråga?