Вызов ebay trading api из представления на основе классов Django не работает, но работает в консоли

В настоящее время я работаю над модулем листинга для ebay. Торговый API ebay уже готов и отлично работает, когда я запускаю его в консоли. Однако когда я пытаюсь вызвать ту же функцию в представлении, основанном на классе, я получаю ошибку сервера 500.

Это класс:

class ListSimpleProduct(generics.GenericAPIView, mixins.ListModelMixin, mixins.RetrieveModelMixin, mixins.CreateModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin):

queryset = SimpleProduct.objects.all()
serializer_class = SimpleProductSerializer
def post(self, request, pk): 
    product = SimpleProduct.objects.get(sku=pk)
    serializer = SimpleProductSerializer(product, many=False)
    data = serializer.data
    item = buildItem(data)
    addItemCheck(item)
    return Response({
        'data': "Item listed on ebay"
    })

А это функция addItemCheck в API ebay: def addItemCheck(item):

(opts, args) = init_options()
try:
    print("Line 100")
    api = Trading(debug=opts.debug, config_file=opts.yaml, appid=opts.appid, domain=opts.domain,
                  certid=opts.certid, devid=opts.devid, warnings=True, timeout=20, siteid=opts.siteid)
    print("Line 103")
    response = api.execute('VerifyAddItem', item)
    print("Line 105")
    info = response.dict()
    print("Line 107")
    return info
except ConnectionError as e:
    print(e)
    print(e.response.dict())

Работает до строки 100, так что функция вызывается. Ошибка должна быть в переменной api. Данные, которые я передаю в функцию, точно такие же, как я ввожу из консоли.

Ок, наконец-то нашел. Путь к yaml-файлу был жестко закодирован, поэтому он мог найти его при запуске через терминал, но не на работающем сервере. Если у кого-нибудь возникнет такая же ошибка, зайдите в раздел "Django best practices", чтобы найти решение.

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