Django каналов - Клиент иногда получает сообщение, а не в другой раз, пока не получит его совсем - PullRequest
0 голосов
/ 03 августа 2020

ОБНОВЛЕНИЕ

Думаю, проблема связана с версией python. На моем локальном хосте он работал нормально, когда у меня было python 3.6. На производстве, где проблема появилась впервые, у меня 3.8. После того, как я изменил свою версию localhost python на 3.8, я увидел ту же проблему, что и при производстве.

ORIGINAL POST

У меня проблема с настройкой up django -каналы с Дафни + Nginx.

Когда я перезагружаю сервер и открываю страницу в браузере, клиент получает список (элементов) из веб-сокета. Когда я обновляю sh страницу, список не загружается. Затем при другом refre sh он загружается. На другом refre sh не загружается и тд. Наконец, он не загружается даже после множества обновлений. Но если я снова перезагружаю сервер и перезагружаю страницу в браузере, список загружается, как и раньше, а при следующем обновлении sh этого не происходит и т. Д.

Кажется, что веб-сокет всегда подключается при просмотре инструмент разработчика.

Я попытался покопаться в нем в Google и SO, но, похоже, не смог найти причину проблемы.

вот мой nginx файл конфигурации:

upstream backserver {
 server localhost:8000;
}


server {
 server_name MY_IP mydomain.com www.mydomain.com;

root /home/muser/myproject;

location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
     alias /home/myuser/myproject/static/;

}


    if (-f $document_root/maintenance_ON.txt) {
         return 503;
    }
    error_page 503 @maintenance;

    location @maintenance {
    rewrite ^(.*)$ /site_maintenance.html break;
 }

location / {

    proxy_pass http://backserver;
    proxy_http_version  1.1;
    proxy_set_header    Upgrade $http_upgrade;
    proxy_set_header    Connection "Upgrade";
    proxy_set_header    Host $host;
    proxy_set_header    X-Real-IP $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Host $server_name;

}

listen [::]:443 ipv6only=on ssl; ##added by me(developer)
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
  if ($host = www.mydomain.com) {
    return 301 https://$host$request_uri;
 } # managed by Certbot


 if ($host = mydomain.com) {
    return 301 https://$host$request_uri;
 } # managed by Certbot

 listen 80;
 listen [::]:80 ipv6only=on;
 server_name MY_IP mydomain.com www.mydomain.com;
 return 404; # managed by Certbot

}

Также у меня в логе появляется эта ошибка. Я думаю, это появляется только при перезагрузке.

ERROR    Exception in callback AsyncioSelectorReactor.callLater.<locals>.run() at /home/myuser/path_to_virtual_env/lib/python3.8/site-packages/twisted/internet/asyncioreactor.py:287
handle: <TimerHandle when=121.470065138 AsyncioSelectorReactor.callLater.<locals>.run() at /home/myuser/path_to_virtual_env/lib/python3.8/site-packages/twisted/internet/asyncioreactor.py:287>
Traceback (most recent call last):
  File "/usr/lib/python3.8/asyncio/events.py", line 81, in _run
    self._context.run(self._callback, *self._args)
  File "/home/myuser/path_to_virtual_env/lib/python3.8/site-packages/twisted/internet/asyncioreactor.py", line 290, in run
    f(*args, **kwargs)
  File "/home/myuser/path_to_virtual_env/lib/python3.8/site-packages/daphne/server.py", line 275, in application_checker
    exception = application_instance.exception()
asyncio.exceptions.CancelledError

Помогите, пожалуйста, я потратил на это целый день и вечер.

Спасибо

1 Ответ

0 голосов
/ 04 августа 2020

Кажется, проблема связана с версией Python. Когда появилась эта проблема, я использовал Python3 .8. После изменения версии Python на 3.6 проблема кажется исправленной. Версию 3.7 не пробовал.

...