首页 > 解决方案 > 在 django 中使用多线程冻结站点

问题描述

我正在制作一个 Django 站点,我必须在其中上传图像,上传后,在后台,我正在对我正在使用的图像进行一些处理,Threading它也成功地工作,因为之前上传图像 POST 请求用于需要 10-20 秒,但现在它只发生在几分之一秒内,所有处理都发生在后台,但问题是当该处理发生在后台时......如果我想继续,Django 没有任何新的 HTTPRespone 含义到其他一些链接它只是旋转和旋转,直到该线程的工作完成,这是我的代码:

def upload(requests):
    if requests.method == 'POST':
        img = requests.FILES['image']
        img_uploader = Image(image=img)
        img_uploader.save()
        image_link = str(img_uploader.image).split("/")[-1]
        start_threading_work(image_link, img_uploader.image_id) # code of this function is below
        print("UPLOAD FUNCTION OVER")

    return redirect('/') # it successfully redirects

def start_threading_work(image_link, image_id):
    keyword_thread = threading.Thread(target=image_keyword_generator, args=(image_link, image_id), daemon=True)
    keyword_thread.start()
    encoding_thread = threading.Thread(target=ImageEncoding, args=(image_link, image_id), daemon=True)
    encoding_thread.start()

正如您所看到的上传函数的倒数第三行,start_threading_work(__, __)它启动线程并重定向我。但是它不会加载任何新页面,直到线程的工作结束,所以如果我必须在任何一种情况下等待,那么使用线程有什么意义!他们的任何解决方案也是如此,否则我在这里犯了某种错误。

有关更多信息,您可以在此处查看我的整个网站的代码:https ://github.com/pritishmishra703/AwesomeImage

谢谢

标签: pythondjangomultithreading

解决方案


推荐阅读