2016-04-28 74 views
10

我正在使用Django通道嘗試獲取實時功能,例如聊天/消息,通知等。現在,我已經使用設置在筆記本電腦上正常工作在這裏的文檔中描述:http://channels.readthedocs.io/en/latest/。我使用本地Redis服務器進行測試。使用Django在AWS上使用AWS上的EC2對Websockets進行故障排除

但是,當我部署到Amazon EC2 Elastic Beanstalk服務器(使用AWS ElastiCache Redis)時,WebSocket功能會失敗。我正在閱讀,我認爲這是因爲亞馬遜的HTTPS不支持WebSockets,所以我需要切換到安全TCP。 我試着這樣做: https://blog.jverkamp.com/2015/07/20/configuring-websockets-behind-an-aws-elb/https://medium.com/@Philmod/load-balancing-websockets-on-ec2-1da94584a5e9#.ak2jh5h0q 但無濟於事。

有沒有人在AWS EB上使用CentOS/Apache和Django實現WebSockets? Django-Channels軟件包相當新穎,所以如果有人經歷過和/或克服了這個障礙,我會感到驚訝。 在此先感謝

+0

我也嘗試使用EBS。據我所知,默認的Python容器希望使用WSGI(因此''aws:elasticbeanstalk:container:python「'中的'WSGIPath:」appname/wsgi.py「'),因此難以運行Daphne 。你有沒有找到解決這個問題的方法? – mikhuang

+0

你弄明白了嗎? – DeadDjangoDjoker

+0

https://www.quora.com/What-is-the-best-way-to-implement-Server-Push-in-Django-without-using-third-party-services#gmKROc –

回答

2

如上所述here可以使用應用程序負載均衡器在Elastic Beanstalk上運行Django通道。

在簡化的形式中,它基本上是:

  1. 創建ALB
  2. 添加2個目標羣體,一個指向端口80,和一個指向瑞香端口,即8080
  3. 創建2 路徑規則。讓默認路由指向目標組1(端口80),並將第二個設置爲使用相對路徑,即。 /WS/和其指向的目標羣體2.
  4. 添加達芙妮和工人supervisord(或其他初始化系統)
  5. DONE!通過相關網址ws://example.com/ws/訪問達芙妮/ websockets。
+0

我試過這一個@ege,但我仍然'失敗:在WebSocket握手期間出錯:非預期的響應代碼:502' –