在Django中渲染页面后在后台执行代码

时间:2019-07-12 06:24:26

标签: python django

我有一个使用twilio的脚本:

from twilio.rest import Client

def wa(testo):
    client = Client()
    # this is the Twilio sandbox testing number
    from_whatsapp_number='whatsapp:+14155238886'
    to_whatsapp_number='whatsapp:+39xxxxxxxxxx'
    ts = 'Anomalia Rapportino ' + str(testo)
    client.messages.create(body=ts,
                           from_=from_whatsapp_number,
                           to=to_whatsapp_number)

我在视图中导入了此脚本,并且具有以下定义:

def grazieeprint(request, pk):
    intermedio = get_object_or_404(IntermProd, pk=pk)
    datilavoro = WhoWork.objects.get(pk=intermedio.work_id)
    try:
        return render(request, 'FBIsystem/thanksandprint.html', {'pkpreso': pk})

    finally:
        try:
            appo = datilavoro.pezziorastima * 2
            if datilavoro.pezziora >= appo:
                testo = datilavoro.pk
                subprocess.Popen([wa(testo)], shell=True)
        except:
            pass

在django加载页面之后,我需要运行'wa(testo)',因为所有发送消息的过程大约需要15/20秒。

我尝试“尝试并最终”,然后尝试“ subbrocess.Popen”,但是在呈现页面之前,它总是发送消息。

请帮助

TY

编辑:

我尝试:

    finally:
        try:
            time.sleep(1)
            appo = datilavoro.pezziorastima * 2
            if datilavoro.pezziora >= appo:
                testo = datilavoro.pk
                subprocess.Popen([wa(testo)], shell=True)

快速加载页面,但不发送

编辑2:

尝试使用Celery,现在脚本为:

from twilio.rest import Client
from celery import shared_task,current_task

@shared_task
def wa(testo):
    print 'test'
    client = Client()
    # this is the Twilio sandbox testing number
    from_whatsapp_number='whatsapp:+14155238886'
    to_whatsapp_number='whatsapp:+39xxxxxxxxx'
    ts = 'Anomalia Rapportino ' + str(testo)
    client.messages.create(body=ts,
                           from_=from_whatsapp_number,
                           to=to_whatsapp_number)

但不能并行工作... 正确的方法是什么?

0 个答案:

没有答案