Google Cloud Storage Support as File storage
Following the Installation Guide I added the DEFAULT_FILE_STORAGE
and GS_BUCKET_NAME
environment variable, which I could found for django-storages.
I was not able to build the image as you did it, so I added a merge request (!136 (merged)), which has already been merged (thank you for that).
I tried it today and get the following: ModuleNotFoundError: No module named 'google.cloud.storage'
.
full message
Internal Server Error: /api/0/projects/test-org/test-proj/releases/test-v1/files/
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 657, in get_or_create
return self.get(**kwargs), False
File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 496, in get
raise self.model.DoesNotExist(
files.models.FileBlob.DoesNotExist: FileBlob matching query does not exist.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/storages/backends/gcloud.py", line 20, in <module>
from google.cloud.storage import Blob, Client
ModuleNotFoundError: No module named 'google.cloud.storage'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python3.10/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/rest_framework/viewsets.py", line 125, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/rest_framework/views.py", line 509, in dispatch
response = self.handle_exception(exc)
File "/usr/local/lib/python3.10/site-packages/rest_framework/views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
File "/usr/local/lib/python3.10/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
raise exc
File "/usr/local/lib/python3.10/site-packages/rest_framework/views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/rest_framework/mixins.py", line 19, in create
self.perform_create(serializer)
File "/code/releases/views.py", line 116, in perform_create
serializer.save(release=release)
File "/usr/local/lib/python3.10/site-packages/rest_framework/serializers.py", line 212, in save
self.instance = self.create(validated_data)
File "/code/releases/serializers.py", line 69, in create
file.putfile(fileobj)
File "/code/files/models.py", line 101, in putfile
file_blob, _ = FileBlob.objects.get_or_create(
File "/usr/local/lib/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 664, in get_or_create
return self.create(**params), True
File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 514, in create
obj.save(force_insert=True, using=self.db)
File "/usr/local/lib/python3.10/site-packages/django/db/models/base.py", line 806, in save
self.save_base(
File "/usr/local/lib/python3.10/site-packages/django/db/models/base.py", line 857, in save_base
updated = self._save_table(
File "/usr/local/lib/python3.10/site-packages/django/db/models/base.py", line 1000, in _save_table
results = self._do_insert(
File "/usr/local/lib/python3.10/site-packages/django/db/models/base.py", line 1041, in _do_insert
return manager._insert(
File "/usr/local/lib/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 1434, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1620, in execute_sql
for sql, params in self.as_sql():
File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1547, in as_sql
value_rows = [
File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1548, in <listcomp>
[
File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1549, in <listcomp>
self.prepare_value(field, self.pre_save_val(field, obj))
File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1497, in pre_save_val
return field.pre_save(obj, add=True)
File "/usr/local/lib/python3.10/site-packages/django/db/models/fields/files.py", line 316, in pre_save
file.save(file.name, file.file, save=False)
File "/usr/local/lib/python3.10/site-packages/django/db/models/fields/files.py", line 91, in save
name = self.field.generate_filename(self.instance, name)
File "/usr/local/lib/python3.10/site-packages/django/db/models/fields/files.py", line 336, in generate_filename
return self.storage.generate_filename(filename)
File "/usr/local/lib/python3.10/site-packages/django/utils/functional.py", line 258, in inner
self._setup()
File "/usr/local/lib/python3.10/site-packages/django/core/files/storage.py", line 413, in _setup
self._wrapped = get_storage_class()()
File "/usr/local/lib/python3.10/site-packages/django/core/files/storage.py", line 408, in get_storage_class
return import_string(import_path or settings.DEFAULT_FILE_STORAGE)
File "/usr/local/lib/python3.10/site-packages/django/utils/module_loading.py", line 30, in import_string
return cached_import(module_path, class_name)
File "/usr/local/lib/python3.10/site-packages/django/utils/module_loading.py", line 15, in cached_import
import_module(module_path)
File "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/usr/local/lib/python3.10/site-packages/storages/backends/gcloud.py", line 23, in <module>
raise ImproperlyConfigured("Could not load Google Cloud Storage bindings.\n"
django.core.exceptions.ImproperlyConfigured: Could not load Google Cloud Storage bindings.
See https://github.com/GoogleCloudPlatform/gcloud-python
Unfortunately I have no knowledge about django and can't do anything with the information.