Невозможно загрузить файл в azure blob starage в Azure django app service

Мой сервер django был впервые развернут на azure осенью прошлого года, и через полгода он внезапно перестал работать. (Все еще возможно, что за это время было выполнено несколько конвейеров с использованием разных веток).

Однако при запуске сервера django с локального хоста (т.е. используя те же переменные окружения AZURE_ACCOUNT_NAME и AZURE_ACCOUNT_KEY) я могу загружать и скачивать файлы из и в медиа директорию контейнера 'poytakirjat'. Но при выполнении кода в azure я могу только скачивать файлы, но не загружать в медиа-каталог 'poytakirjat'. Когда я пытаюсь загрузить что-то, я получаю только Http ошибку 502 и ничего больше, даже если я установил DEBUG в True.

Я даже не знаю, как получить некоторые файлы журналов.

models.py:

from django.db import models
from custom_azure import AzureMediaStorage
import datetime
from html.parser import HTMLParser
from tinymce import models as tinymce_models
from django.core.mail import send_mail
from ckeditor.fields import RichTextField
from django.contrib.auth.models import User

# Create your models here.

class Tiedostot3(models.Model):
    otsikko = models.CharField(max_length=250)
    kuvaus = RichTextField(blank=True)
    paivitetty = models.DateTimeField(auto_now_add=True, verbose_name="Päivitetty")
    tiedosto = models.FileField(upload_to='poytakirjat', storage=AzureMediaStorage(), verbose_name="Tiedosto", blank = True)
    owner = models.ForeignKey(User, null=True, blank=True, on_delete=models.CASCADE)
    
    class Meta:
        ordering = ['-paivitetty']
        verbose_name = "tiedosto"
        verbose_name_plural="tiedostot"
        
    def __unicode__(self):
        return unicode(self.otsikko)
        
class Liite3(models.Model):
    otsikko = models.CharField(max_length=250)
    tiedosto = models.FileField(upload_to='poytakirjat', storage=AzureMediaStorage())
    doku = models.ForeignKey(Tiedostot3, related_name="liitteet", on_delete=models.CASCADE)
    
    class Meta:
        verbose_name_plural="Liitteet"
    
    def __unicode__(self):
        return unicode(self.otsikko)

admin.py

from django.contrib import admin
from extranet.models import Tiedostot3, Liite3

class Liitet3Inline(admin.StackedInline):
    model = Liite3
    extra = 0
        
class Tiedostot3Admin(admin.ModelAdmin):
    fields = ['otsikko', 'kuvaus', 'tiedosto']
    
    list_display = ('otsikko','paivitetty')
    inlines = [
      Liitet3Inline,
  ]

    def get_queryset(self, request):
        qs = super(Tiedostot3Admin, self).get_queryset(request)
        if request.user.is_superuser:
            return qs
        return qs.filter(owner=request.user)
        
    def save_model(self, request, obj, form, change):
        obj.owner = request.user
        obj.save()
                
admin.site.register(Tiedostot3, Tiedostot3Admin)

custom_azure.py:

from storages.backends.azure_storage import AzureStorage
import os

class AzureMediaStorage(AzureStorage):
    account_name = os.environ['AZURE_ACCOUNT_NAME'] # Must be replaced by your <storage_account_name>
    account_key = os.environ['AZURE_ACCOUNT_KEY'] # Must be replaced by your <storage_account_key>
    azure_container = 'media'
    expiration_secs = None

settings.py:

Поскольку вы столкнулись с ошибкой Http 502, попробуйте устранить эту проблему тремя способами :

  1. Наблюдение и мониторинг поведения приложения
  2. Собирать данные
  3. Разбираться в проблеме
  4. .

Обратитесь к этой ссылке для получения информации о методах устранения неполадок. Также перезапуск приложения является самым простым способом восстановления после подобных ошибок.

Обратитесь к этой похожей теме SO Django Azure upload file to blob storage для получения дополнительной информации.

Вернуться на верх