Django - процессы импорта нарушаются, если настроено несколько бэкендов S3
У меня есть процесс импорта, который должен получить несколько бэкендов S3 для объектов. На самом деле процесс работает нормально, если у меня настроен только один бэкенд S3. Как только у меня настроено несколько бэкендов S3 для получения данных, весь процесс импорта терпит неудачу, поскольку в таблицу "Files" не записываются записи. Я упаковал процесс импорта как задачу celery, см. ниже:
@app.task(name="Fetch Descriptor JSON", base=Singleton)
@transaction.atomic
def fetch_descriptors(*args, **kwargs):
keys = []
urls = []
for resource in S3Backend.objects.filter(backend_type=0):
endpoint = resource.endpoint
bucket = resource.bucket
access_key = resource.access_key
secret_key = resource.secret_key
region = resource.region
for obj in s3_get_resource(endpoint=endpoint, access_key=access_key, secret_key=secret_key, region=region).Bucket(bucket).objects.all():
keys.append(obj.key)
for key in keys:
descriptor = s3_get_client(endpoint=endpoint, access_key=access_key, secret_key=secret_key, region=region).generate_presigned_url(
ClientMethod='get_object',
Params={'Bucket': bucket, 'Key': key},
ExpiresIn=432000,
)
new_file, create = Files.objects.get_or_create(descriptor=strip_descriptor_url_scheme(descriptor),
file_path=key,
file_name=Path(key).name,
s3_backend=resource
)
urls.append(descriptor)
workflow_extract_descriptors = (
group([extract_descriptors.s(descriptor) for descriptor in urls]).apply_async()
)
Есть ли какие-либо проблемы с моей конструкцией цикла for if
S3Backend.objects.filter(backend_type=0)
возвращает более одной записи?
Заранее спасибо