Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django如何在保存对象后发送电子邮件,但发送电子邮件功能不';t延迟返回HttpResponse_Python_Django_Email - Fatal编程技术网

Python Django如何在保存对象后发送电子邮件,但发送电子邮件功能不';t延迟返回HttpResponse

Python Django如何在保存对象后发送电子邮件,但发送电子邮件功能不';t延迟返回HttpResponse,python,django,email,Python,Django,Email,我想在将数据保存到数据库后发送电子邮件,但我不想在完成发送电子邮件后等待返回HTTP响应,我想直接返回HTTP响应,然后由Django self发送电子邮件 def received(request): login=get_login(request) received=True cluster_list=models.Cluster.objects.all() Asset_Type=models.CategoryOfAsset.objects.all()

我想在将数据保存到数据库后发送电子邮件,但我不想在完成发送电子邮件后等待返回
HTTP
响应,我想直接返回
HTTP
响应,然后由Django self发送电子邮件

def received(request):
    login=get_login(request)
    received=True
    cluster_list=models.Cluster.objects.all()
    Asset_Type=models.CategoryOfAsset.objects.all()
    if request.method=="GET":
        return render(request,"received.html",locals())
    if request.is_ajax():
        try:
            req=json.loads(request.body)
            meta_data_dict=req['meta_data']
            item_data_dict=req['all_item_data']['item_data']
            received_or_shipment=True
            insert_meta_item_to_DB(meta_data_dict,item_data_dict,received_or_shipment)
            sendTemplateEmail(meta_data_dict,item_data_dict)
            return HttpResponse(json.dumps('sucessful'))
        except Exception, e:
            logger.error(e)
现在,代码将导致此错误:

ValueError:view tool.views.received未返回 HttpResponse对象

它返回的是无。

使用本地SMTP服务器。 这将导致邮件几乎立即排队(即使未送达),因此您可以发送http响应,而不会因发送电子邮件的延迟而受阻

使用任务队列 在最简单的形式中,您可以将电子邮件消息放入一个表中,让cron job定期检查该表并发送任何需要发送的消息

一个稍微复杂一点的方法是使用并监听它

更复杂的(?)解决方案是使用芹菜任务。

使用本地SMTP服务器。 这将导致邮件几乎立即排队(即使未送达),因此您可以发送http响应,而不会因发送电子邮件的延迟而受阻

使用任务队列 在最简单的形式中,您可以将电子邮件消息放入一个表中,让cron job定期检查该表并发送任何需要发送的消息

一个稍微复杂一点的方法是使用并监听它


更复杂的(?)解决方案是使用芹菜任务。

最简单的解决方案是异步运行:

import threading

def run_async(func, args):
    threading.Thread(target=func, args=args).start()
然后:

run_async([function], ([args]))

最简单的解决方案是异步运行:

import threading

def run_async(func, args):
    threading.Thread(target=func, args=args).start()
然后:

run_async([function], ([args]))