如何在Django应用程序中运行celery和redis

时间:2017-12-26 02:20:47

标签: python django oracle

我有一个django应用程序的问题,它通过celery任务和redis执行存储过程(oracle数据库)。该应用程序在Linux服务器上运行,但是这个下来然后我使用python manage.py runserver解除了aplication,但我不知道如何处理celery用来运行调用存储的任务的部分程序

这是一个视图

@csrf_exempt
@login_required(login_url='/login/')
def DynamicView(request):
   idc = request.GET.get('idc')
   idpl = request.GET.get('idpl')
   if request.method == 'POST':
      usuario = request.user
      rpost = request.POST
      form = DynamicForm(idpl,idc, request.POST)
      idc= request.POST.get('idcontrol')
      idpl= request.POST.get('idpl')
      if form.is_valid():
        pl_ejecutar = BuildPl(idpl,idc,usuario,rpost)
        mensaje = pl_ejecutar
        dynamicExec.delay(pl_ejecutar,idc,idpl)

      nom_control = BuscarControl(idc)
      nom_pl = BuscarControlPl(idpl)
      usu = User.objects.get(username=usuario)
      nombre_usu = usu.username 
      accion = 'Se ha ejecutado el Pl: ' \
                  + nom_pl + '. Para el Control: ' \
                  + nom_control + '. Por: ' + nombre_usu

      RegistroAcciones(usuario,accion)  

      return HttpResponseRedirect('/monitor/')   

这是一项任务

@task(queue='ds')
def dynamicExec(pl,pidc,pidpl):
    runpl = EjecutarPl()
    spe = runpl.ejecuta(pl,pidc,pidpl)
    return none

这里是调用存储过程的模型

class EjecutarPl():
   def ejecuta(self, plv,idcv,idplv):
      cursor = connection.cursor()
      query = "begin cbs_django.ejecutar_pl_v2(:ppl,:pidc,:pidpl); end; "
      param = {"ppl":plv,"pidc":idcv,"pidpl":idplv}
      spexec = cursor.execute(query,param)
      cursor.close()
      return spexec

我没有使用芹菜和redis的经验,所以如果有人能帮助我,我会很感激。

0 个答案:

没有答案