Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Django - Cách sử dụng hàng đợi tác vụ không đồng bộ với celery và redis

Như đã nói ở trên, bạn có thể không cần cần tây. Đây là một ví dụ bắt nguồn từ trường hợp 2 của điều này:https://zapier.com/blog/async-celery-example-why-and-how/. Nó hoàn toàn hoạt động với tôi:

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

của tôi chứa:

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

Và urls.py của tôi chứa:

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

Điều gì xảy ra khi tôi truy cập localhost:8000 / test / là tôi ngay lập tức xem:

Sau khoảng 10 giây, tôi thấy:

Ý tưởng là bạn trả lại trang của mình ngay lập tức và sử dụng jquery để tìm nạp kết quả của thao tác bất cứ khi nào kết thúc và cập nhật trang của bạn cho phù hợp. Bạn có thể thêm nhiều thứ khác như thanh tiến trình / tải hình ảnh, v.v. Đối với ví dụ của bạn, bạn có thể thực hiện xử lý cho pi1pis trong nền và tải nó vào HTML sau khi hoàn tất.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis ::CommandError:ERR Client đã gửi AUTH, nhưng không có mật khẩu nào được đặt

  2. Resque, Resque Server, trên RedisToGo với Heroku

  3. Giới thiệu về cấu trúc dữ liệu Redis:Hàm băm

  4. Làm thế nào để xác định thời gian thực thi của một tập lệnh Lua trong Redis?

  5. ngoại lệ lồng nhau là redis.clients.jedis.exceptions.JedisConnectionException:Không thể lấy tài nguyên từ nhóm