Guest User

Untitled

a guest
Apr 16th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. from channels.generic.websocket import AsyncJsonWebsocketConsumer
  2. from .tasks import PruebaCelery
  3. class Consumer(AsyncJsonWebsocketConsumer):
  4. async def connect(self):
  5. print(self.channel_name)
  6. await self.accept()
  7. print("[BACK]:Cliente conectado")
  8.  
  9. async def disconnect(self, close_code):
  10. return None
  11.  
  12. async def receive_json(self, contenido):
  13.  
  14. try:
  15. if True:
  16. print("[BACK]:Datos recividos",contenido)
  17. await self.mensaje(contenido)
  18. except:
  19. pass
  20.  
  21. async def mensaje(self, contenido):
  22. print("[BACK]:Si se cumple la condicion se envia mensaje")
  23. print(contenido["Clave_Tipo_Filtro"])
  24. TipoFiltro = contenido["Clave_Tipo_Filtro"]
  25. if TipoFiltro == "Filtro_Paso_Bajo":
  26. print("dentro")
  27. mensaje = PruebaCelery.delay(self.channel_name)
  28. print("Here")
  29. print ("hola %s" %str(mensaje["text"]))
  30. print("Out")
  31. print ("Task ID: %s" %mensaje)
  32. await self.send("Task ID: %s" %str(mensaje))
  33. await self.send("se ha ejecutado celery")
  34. else:
  35. print("no entra")
  36.  
  37. return None
  38.  
  39. #De celery
  40. from Filtros.celery import app
  41. import json
  42. from channels.layers import get_channel_layer
  43. from asgiref.sync import AsyncToSync
  44.  
  45.  
  46. @app.task
  47. def PruebaCelery(channel_name):
  48. # responder al cliente
  49. channel_layer = get_channel_layer()
  50. AsyncToSync(channel_layer.send)(
  51. channel_name,
  52. {"type": "Test",
  53. "text": json.dumps("Hi im celery"),
  54. })
  55.  
  56. <script type="text/javascript">
  57. //Envio de la conexion del front al back.
  58. function onOpen(evt) {
  59. console.log("[FRONT]:El websocket ha sido conectado");
  60. websocket.send(JSON.stringify({data: "[FRONT]:El websocket esta conectado...ahora estas conectado con el front"}));
  61. }
  62. //Recepcion datos del back al front
  63. function onMessage(evt) {
  64. console.log("[FRONT]:Mensaje recibido del back al front:" + evt.data);
  65.  
  66. }
  67.  
  68. //Conexion del websocket
  69. function setupWebSocket() {
  70. prefix = "ws";
  71. websocket = new WebSocket(prefix + "://" + location.host + "/Crear_FPB/");
  72. websocket.onopen = function(evt) { onOpen(evt); };
  73. websocket.onmessage = function(evt) { onMessage(evt); };
  74. }
  75.  
  76. //Envio de los datos del formulario del front al back.
  77. function runButton() {
  78. var variables_FPBajo = {
  79. Clave_Tipo_Filtro: "Filtro_Paso_Bajo",
  80. Clave_Ap_db: $("#Valor_Ap_db").val(),
  81. Clave_Medida_Ap_db: $("#Medida_Ap_db").val(),
  82. Clave_As_db: $("#Valor_As_db").val(),
  83. Clave_Fp_Hz: $("#Valor_Fp_Hz").val()
  84. };
  85. websocket.send(JSON.stringify(variables_FPBajo));
  86. }
  87.  
  88. window.addEventListener("load", setupWebSocket);
Add Comment
Please, Sign In to add comment