2016-04-28 9 views
10

Ich verwende Django-Kanäle, um Echtzeitfunktionen wie Chat/Nachrichten, Benachrichtigungen usw. zu erhalten. Im Moment habe ich alles auf meinem Laptop mit den Einstellungen funktioniert beschrieben in der Dokumentation hier: http://channels.readthedocs.io/en/latest/. Ich benutze einen lokalen Redis-Server zu Testzwecken.Fehlerbehebung für WebSockets mit EC2 auf AWS mit Django

Wenn ich jedoch auf meinem Amazon EC2 Elastic Beanstalk-Server (mit einem AWS ElastiCache Redis) bereitstellen, schlägt die WebSocket-Funktionalität fehl. Ich habe gelesen und ich denke, es ist aufgrund der Tatsache, dass Amazon HTTPS WebSockets nicht unterstützt, so dass ich zu Secure TCP wechseln muss. Ich versuchte es mit: https://blog.jverkamp.com/2015/07/20/configuring-websockets-behind-an-aws-elb/ und https://medium.com/@Philmod/load-balancing-websockets-on-ec2-1da94584a5e9#.ak2jh5h0q aber ohne Erfolg.

Hat jemand Erfolg bei der Implementierung von WebSockets mit CentOS/Apache und Django auf AWS EB? Das Django-Channels-Paket ist ziemlich neu und ich war sehr gespannt, ob jemand diese Hürde erlebt und/oder überwunden hat. Vielen Dank im Voraus

+0

Ich bin auch zu verwenden EBS versuchen. Soweit ich das beurteilen kann, erwartet der Standard-Python-Container die Verwendung von WSGI (daher 'WSGIPath:" appname/wsgi.py "in' "aws: elasticbeanstalk: container: python" ') und macht es daher schwierig, Daphne stattdessen auszuführen . Hast du jemals einen Weg gefunden, das zu lösen? – mikhuang

+0

Hast du das herausgefunden ?? – DeadDjangoDjoker

+0

https://www.quora.com/Was-ist-der-beste-weg-zu-implementieren-Server-Push-in-Django-ohne-verwenden-dreier-party-services#gmKROc –

Antwort

2

Wie beschrieben here ist es möglich, Django-Kanäle auf Elastic Beanstalk mit einem Application Load Balancer ausführen.

In einer vereinfachten Form, es ist im Grunde:

  1. Ein ALB
  2. hinzufügen 2 Zielgruppen, eine, die Port-Punkte auf 80, und eine, die zu Daphne Port Punkten, das heißt 8080
  3. Erstellen Sie 2 Pfadregeln. Lassen Sie die Standardroute auf die Zielgruppe 1 (Port 80) zeigen und legen Sie die zweite Route auf einen relativen Pfad fest, z. /ws/ und verweisen Sie Gruppe (oder ein anderes Init-System)
  4. DONE supervisord 2.
  5. hinzufügen Daphne und Arbeiter zum Ziel! Greifen Sie über die relative URL auf Daphne/websockets zu. ws: //example.com/ws/.
+0

Ich habe versucht, dieses @Ege, aber ich bekomme immer noch 'fehlgeschlagen: Fehler während WebSocket Handshake: Unerwarteter Antwortcode: 502' –

1
+0

Wenn Sie eine neue Frage haben, fragen Sie sie, indem Sie auf die [Frage stellen] (/ Fragen/ask) -Taste. Fügen Sie einen Link zu dieser Frage hinzu, wenn es hilft Kontext bereitzustellen. –

+0

Ich folgte diesem @Susej, aber ich bekomme immer noch 'failed: Fehler beim WebSocket-Handshake: Unerwarteter Antwortcode: 502' –