Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Django - Cara menggunakan antrian tugas asinkron dengan seledri dan redis

Seperti yang dikatakan sebelumnya, Anda mungkin tidak membutuhkan seledri. Berikut adalah contoh yang diturunkan dari kasus 2 ini:https://zapier.com/blog/async-celery-example-why-and-how/. Ini sepenuhnya bekerja untuk saya:

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')

index.html saya berisi:

<!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>

Dan urls.py saya berisi:

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)
]

Apa yang terjadi ketika saya mengunjungi localhost:8000/test/ adalah bahwa saya langsung lihat:

Setelah sekitar 10 detik, saya kemudian melihat:

Idenya adalah Anda mengembalikan halaman Anda secara instan dan menggunakan jquery untuk mengambil hasil operasi setiap kali selesai dan memperbarui halaman Anda sesuai dengan itu. Anda dapat menambahkan lebih banyak hal seperti bilah kemajuan/memuat gambar dll. Sebagai contoh, Anda dapat melakukan pemrosesan untuk pi1 dan pis di latar belakang dan memuatnya ke dalam HTML setelah selesai.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara mengubah antara database redis?

  2. Faye atau Redis Pubsub

  3. Skrip redis lua tidak berfungsi

  4. Pop beberapa nilai dari struktur data Redis secara atom?

  5. Menggunakan Set Redis