Uwsgi+django+bokeh

Integrating bokeh server into Django, using Python manager.py Runserver access is normal, but bokeh cannot be used after deploying Django with uwsgi. Prompt xxx not found/ autoload.js

Hi I have got same problem :

[26/Mar/2021 15:25:53] "GET /index/sea_surface HTTP/1.1" 200 769
Not Found: /index/sea_surface/autoload.js
[26/Mar/2021 15:25:53] "GET /index/sea_surface/autoload.js?bokeh-autoload-element=1075&bokeh-app-path=/index/sea_surface&bokeh-absolute-url=http://127.0.0.1:8000/index/sea_surface HTTP/1.1" 404 5284

Did you solve this problem?

Django is in debug mode and I printed some variables
example

def sea_surface(request: HttpRequest) -> HttpResponse:
     script = server_document(request.build_absolute_uri())
    print(script)
    return render(request, "embed.html", dict(script=script))

I get

< script id="1075" >
var xhr = new XMLHttpRequest()
xhr.responseType = 'blob';
xhr.open('GET', "http://127.0.0.1:8000/index/sea_surface/autoload.js?bokeh-autoload-element=1075&bokeh-app-path=/index/sea_surface&bokeh-absolute-url=http://127.0.0.1:8000/index/sea_surface", true);

  xhr.onload = function (event) {
    var script = document.createElement('script'),
    src = URL.createObjectURL(event.target.response);
    script.src = src;
    document.body.appendChild(script);
  };
xhr.send();
</script>

and http://127.0.0.1:8000/index/sea_surface page is

<!doctype html>

<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Embedding a Bokeh Apps In Django via autoload.js</title>
</head>

<body>
  <div>
    This Bokeh app below is served by a Django server (via autoload.js):
  </div>
  
<script id="1075">
  var xhr = new XMLHttpRequest()
  xhr.responseType = 'blob';
  xhr.open('GET', "http://127.0.0.1:8000/index/sea_surface/autoload.js?bokeh-autoload-element=1075&bokeh-app-path=/index/sea_surface&bokeh-absolute-url=http://127.0.0.1:8000/index/sea_surface", true);
  
  xhr.onload = function (event) {
    var script = document.createElement('script'),
    src = URL.createObjectURL(event.target.response);
    script.src = src;
    document.body.appendChild(script);
  };
xhr.send();
</script>
</body>
</html>

What’s wrong?

Can either of you provide a complete Minimal Reproducible Example? I can’t think of any reason the autoload.js URL fetch would 404 if the first fetch succeeds, so this will simply take some actual investigation running real code to figure out.

Thanks for you answer. Minimal example with django :thinking:
Now I put my code in trash and start again from bokeh/examples/howto/server_embed/django_embed/django_embed at a4a807585f1b02ad213c643bf0fda6081ae4170b · bokeh/bokeh · GitHub
My code is here
It does not work but there is a warning

Watching for file changes with StatReloader
Performing system checks...

<DjangoBokehConfig: bokeh.server.django>
WARNING:bokeh.server.django.routing:bokeh applications directory 'F:\Program Files\Python\lib\site-packages\app' doesn't exist
System check identified no issues (0 silenced).
March 26, 2021 - 19:36:29
Django version 3.1, using settings 'traimaocv.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[26/Mar/2021 19:37:37] "GET /index/my_sea_surface HTTP/1.1" 200 751
Not Found: /sea_surface/autoload.js
[26/Mar/2021 19:37:37] "GET /sea_surface/autoload.js?bokeh-autoload-element=1074&bokeh-app-path=/sea_surface&bokeh-absolute-url=http://127.0.0.1:8000/sea_surface HTTP/1.1" 404 5519

investigating

I tried GitHub - macwis/djpanel: Django + Panel + Bokeh (boilerplate). There is a problem with asgi configuration :

Django version 3.1, using settings 'djpanel.settings'
Starting ASGI/Channels version 3.0.3 development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Exception inside application: __init__() takes 1 positional argument but 2 were given
Traceback (most recent call last):
  File "F:\Program Files\Python\lib\site-packages\channels\staticfiles.py", line 44, in __call__
    return await self.application(scope, receive, send)
  File "F:\Program Files\Python\lib\site-packages\channels\routing.py", line 71, in __call__
    return await application(scope, receive, send)
  File "F:\Program Files\Python\lib\site-packages\channels\sessions.py", line 47, in __call__
    return await self.inner(dict(scope, cookies=cookies), receive, send)
  File "F:\Program Files\Python\lib\site-packages\channels\sessions.py", line 254, in __call__
    return await self.inner(wrapper.scope, receive, wrapper.send)
  File "F:\Program Files\Python\lib\site-packages\channels\auth.py", line 181, in __call__
    return await super().__call__(scope, receive, send)
  File "F:\Program Files\Python\lib\site-packages\channels\middleware.py", line 26, in __call__
    return await self.inner(scope, receive, send)
  File "F:\Program Files\Python\lib\site-packages\channels\routing.py", line 150, in __call__
    return await application(
  File "F:\Program Files\Python\lib\site-packages\asgiref\compatibility.py", line 33, in new_application
    instance = application(scope)
TypeError: __init__() takes 1 positional argument but 2 were given
HTTP GET /sliders 500 [0.33, 127.0.0.1:1337]
F:\django\djpanel-master\djpanel\settings.py changed, reloading.
Traceback (most recent call last):
  File "F:\django\djpanel-master\manage.py", line 21, in <module>
    main()
  File "F:\django\djpanel-master\manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "F:\Program Files\Python\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "F:\Program Files\Python\lib\site-packages\django\core\management\__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "F:\Program Files\Python\lib\site-packages\django\core\management\__init__.py", line 244, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "F:\Program Files\Python\lib\site-packages\django\core\management\__init__.py", line 37, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "F:\Program Files\Python\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "F:\Program Files\Python\lib\site-packages\django\contrib\staticfiles\management\commands\runserver.py", line 3, in <module>
    from django.core.management.commands.runserver import (
  File "F:\Program Files\Python\lib\site-packages\django\core\management\commands\runserver.py", line 10, in <module>
    from django.core.servers.basehttp import (
  File "F:\Program Files\Python\lib\site-packages\django\core\servers\basehttp.py", line 14, in <module>
    from wsgiref import simple_server
  File "F:\Program Files\Python\lib\wsgiref\simple_server.py", line 13, in <module>
    from http.server import BaseHTTPRequestHandler, HTTPServer
  File "F:\Program Files\Python\lib\http\server.py", line 628, in <module>
    class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
  File "F:\Program Files\Python\lib\http\server.py", line 880, in SimpleHTTPRequestHandler
    mimetypes.init() # try to read system mime.types
  File "F:\Program Files\Python\lib\mimetypes.py", line 353, in init
    db.read_windows_registry()
  File "F:\Program Files\Python\lib\mimetypes.py", line 259, in read_windows_registry
    with _winreg.OpenKey(hkcr, subkeyname) as subkey:

Now if I disabled asgi I can get same error :

Django version 3.1, using settings 'djpanel.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Not Found: /
[27/Mar/2021 19:18:23] "GET / HTTP/1.1" 404 2295
Not Found: /Sliders
[27/Mar/2021 19:18:41] "GET /Sliders HTTP/1.1" 404 2334
[27/Mar/2021 19:18:53] "GET /sliders HTTP/1.1" 301 0
[27/Mar/2021 19:18:53] "GET /sliders/ HTTP/1.1" 200 611
Not Found: /sliders/autoload.js
[27/Mar/2021 19:18:53] "GET /sliders/autoload.js?bokeh-autoload-element=1002&bokeh-app-path=/sliders&bokeh-absolute-url=http://127.0.0.1:8000/sliders HTTP/1.1" 404 2542

May be problem is in windows 10 implementation of asgi…