Я провожу несколько тестов перед переходом с каналов 1.x на 2.x; мой исходный код загружает значения файлов csv в базу данных. Однако в настоящее время я не могу установить соединение с потребителем.
settings.py
ASGI_APPLICATION = "UbiosData.routing.application"
CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels_redis.core.RedisChannelLayer",
"CONFIG": {
"hosts": [("localhost", 6379)],
},
},
}
routing.py
from channels.routing import ProtocolTypeRouter, ChannelNameRouter
from .consumers import TestConsumer
application = ProtocolTypeRouter({
"channel": ChannelNameRouter({
"somename": TestConsumer,
}),
})
потребители.py
from channels.consumer import SyncConsumer
class TestConsumer(SyncConsumer):
def websocket_connect(self, event):
print("websocket_connect")
self.send({
"type": "websocket.accept",
})
def websocket_receive(self, event):
print("websocket_receive")
self.send({
"type": "websocket.send",
"text": event["text"],
})
def test_send(self, message):
print("Entering consumer")
print(message["text"])
views.py
def test_channels(request):
channel_layer = get_channel_layer()
print(channel_layer)
channel_layer.send("somename", {
"type": "test.send",
"text": "test"
})
return render(request, "data/data_index.html")
Результат оператора печати в функции test_channels
:
RedisChannelLayer(hosts=[{'address': ('localhost', 6379)}])
Операторы печати в потребителе не выполняются, и я не получаю сообщения об ошибке. Я использую Python 3.5.3, каналы 2.0.2 и каналы-redis 2.0.2
РЕДАКТИРОВАТЬ: Вот результат, когда я запускаю сервер разработки со своим старым проектом, используя каналы 1.1.6:
Starting Channels development server at http://127.0.0.1:8000/
Channel layer default (asgi_redis.core.RedisChannelLayer)
Quit the server with CONTROL-C.
2018-02-16 16:46:48,604 - INFO - worker - Listening on channels http.request, ingest_equipment, ingest_values, websocket.connect, websocket.disconnect, websocket.receive
2018-02-16 16:46:48,606 - INFO - worker - Listening on channels http.request, ingest_equipment, ingest_values, websocket.connect, websocket.disconnect, websocket.receive
2018-02-16 16:46:48,608 - INFO - worker - Listening on channels http.request, ingest_equipment, ingest_values, websocket.connect, websocket.disconnect, websocket.receive
2018-02-16 16:46:48,609 - INFO - worker - Listening on channels http.request, ingest_equipment, ingest_values, websocket.connect, websocket.disconnect, websocket.receive
2018-02-16 16:46:48,611 - INFO - server - HTTP/2 support not enabled (install the http2 and tls Twisted extras)
2018-02-16 16:46:48,611 - INFO - server - Using busy-loop synchronous mode on channel layer
2018-02-16 16:46:48,611 - INFO - server - Listening on endpoint tcp:port=8000:interface=127.0.0.1
Вот результат, когда я запускаю сервер с новым проектом с помощью каналов 2.0.2:
Starting ASGI/Channels development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
2018-02-16 17:05:08,331 - INFO - server - HTTP/2 support not enabled (install the http2 and tls Twisted extras)
2018-02-16 17:05:08,332 - INFO - server - Configuring endpoint tcp:port=8000:interface=127.0.0.1
2018-02-16 17:05:08,334 - INFO - server - Listening on TCP address 127.0.0.1:8000
Вы заметите, что "рабочий - Прослушивание каналов" отсутствует, когда я использую каналы 2 ...
django shell
пробовали? - person The_Cthulhu_Kid   schedule 14.02.2018python manage.py shell
, затем импортируйтеget_channel_layer
и запустите его, чтобы посмотреть, что он вернет. - person The_Cthulhu_Kid   schedule 14.02.2018channels
так же, как вы это делаете в своем файле - person The_Cthulhu_Kid   schedule 14.02.2018C:\Users\Smoky05\PycharmProjects\UbiosData\data\views.py:21: RuntimeWarning: coroutine 'RedisChannelLayer.send' was never awaited "text": "test" <HttpResponse status_code=200, "text/html; charset=utf-8">
- person Simon TheChain   schedule 14.02.2018