Nginx Django通道-客户端有时会接收消息,而不是在其他时间接收消息,直到它不';我一点也没收到

Nginx Django通道-客户端有时会接收消息,而不是在其他时间接收消息,直到它不';我一点也没收到,nginx,websocket,django-channels,daphne,Nginx,Websocket,Django Channels,Daphne,更新 我认为问题在于python版本。在我的本地主机上,当我使用python 3.6时,它工作得很好。在生产方面,问题首先出现在那里,我有3.8。在我将localhost python版本更改为3.8之后,我可以看到与生产环境相同的问题 原创帖子 我面临着与Daphne+Nginx建立django频道的问题 当我重新启动服务器并在浏览器中打开页面时,客户端会从websocket获取(项目)列表。当我刷新页面时,列表不会加载。然后在另一次刷新时加载。在另一次刷新时,它不会加载,以此类推。最后,即使

更新


我认为问题在于python版本。在我的本地主机上,当我使用python 3.6时,它工作得很好。在生产方面,问题首先出现在那里,我有3.8。在我将localhost python版本更改为3.8之后,我可以看到与生产环境相同的问题

原创帖子

我面临着与Daphne+Nginx建立django频道的问题

当我重新启动服务器并在浏览器中打开页面时,客户端会从websocket获取(项目)列表。当我刷新页面时,列表不会加载。然后在另一次刷新时加载。在另一次刷新时,它不会加载,以此类推。最后,即使在多次刷新之后,它也不会加载。但是,如果我重新启动服务器并在浏览器中重新加载页面,列表会像以前一样加载,下次刷新时不会加载,依此类推

在查看开发人员工具时,websocket似乎总是连接在一起

我试着在谷歌上深入研究,但似乎没有找到问题的原因

这是我的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
回调AsyncioSelectorReactor.callLater..run()在/home/myuser/path_to_virtual_env/lib/python3.8/site packages/twisted/internet/asyncioreactor.py:287处出现错误异常 处理: 回溯(最近一次呼叫最后一次): 文件“/usr/lib/python3.8/asyncio/events.py”,第81行,正在运行 self.\u context.run(self.\u回调,*self.\u参数) 文件“/home/myuser/path_to_virtual_env/lib/python3.8/site packages/twisted/internet/asynciioreactor.py”,第290行,正在运行 f(*args,**kwargs) 文件“/home/myuser/path_to_virtual_env/lib/python3.8/site packages/daphne/server.py”,第275行,在应用程序检查程序中 exception=应用程序\实例。exception() asyncio.exceptions.CancelleError 请帮帮我,我花了整整一天的时间在这上面


谢谢

问题似乎是由Python版本引起的。当这个问题出现时,我正在使用Python3.8。将Python版本更改为3.6后,问题似乎得到了解决。我没有尝试3.7版。

你能发布你的用户代码吗?我认为问题在于python版本。在我的本地主机上,当我使用python 3.6时,它工作得很好。在制作方面,我有3.8。在我将LocalHostPython版本更改为3.8之后,我可以看到与生产上相同的问题,我在python3.9(和3.8)上也有同样的问题。我修正了切换到3.6的问题