django-pwa icon indicating copy to clipboard operation
django-pwa copied to clipboard

Django 4.2 : ResourceWarning: unclosed file serviceworker.js

Open pulse-mind opened this issue 2 years ago • 3 comments

When running with Django 4.2, there is a log :

/Users/pmind/.virtualenvs/myproject/lib/python3.10/site-packages/pwa/views.py:8: ResourceWarning: unclosed file <_io.TextIOWrapper name='/Users/pmind/Projects/myproject/myproject/templates/serviceworker.js' mode='r' encoding='UTF-8'>
  response = HttpResponse(open(app_settings.PWA_SERVICE_WORKER_PATH).read(), content_type='application/javascript')

The source code is :

def service_worker(request):
    response = HttpResponse(open(app_settings.PWA_SERVICE_WORKER_PATH).read(), content_type='application/javascript')
    return response

This is a suggestion to change this :

def service_worker(request):
    data = ''
    try:
        f = open(app_settings.PWA_SERVICE_WORKER_PATH)
        data = f.read()
    finally:
        f.close()
    response = HttpResponse(data, content_type='application/javascript')
    return response

pulse-mind avatar Jun 25 '23 10:06 pulse-mind

better:

def service_worker(request):
    return FileResponse(open(app_settings.PWA_SERVICE_WORKER_PATH, 'rb'), content_type='application/javascript')

devkral avatar Jun 28 '23 07:06 devkral

anyway this is also not clean. Better would be to use the file API of django as it could also handle aws and co

devkral avatar Jun 28 '23 07:06 devkral

you're right, but it one step forward ;)

pulse-mind avatar Jun 28 '23 07:06 pulse-mind

A fix will ship in the next release.

hartungstenio avatar Mar 12 '24 21:03 hartungstenio