Python/Django запросы JSONDecodeError: Ожидаемое значение: строка 1 столбец 1 (char 0)

Я пытаюсь сделать Microservice warehouse / store. Все в порядке, но когда я хочу подключить celery к моему проекту, я получаю ошибку Expecting value: line 1 column 1 (char 0) when trying to start celery

Исключение:

Traceback (most recent call last):
    File "/usr/local/lib/python3.9/site-packages/celery/app/trace.py", line 450, in trace_task
    R = retval = fun(*args, **kwargs)
    File "/usr/local/lib/python3.9/site-packages/celery/app/trace.py", line 731, in __protected_call__
    return self.run(*args, **kwargs)
    File "/code/shop/tasks.py", line 105, in shop_sync
    response = requests.get(url=url).json()
    File "/usr/local/lib/python3.9/site-packages/requests/models.py", line 910, in json
    return complexjson.loads(self.text, **kwargs)
    File "/usr/local/lib/python3.9/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
    File "/usr/local/lib/python3.9/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    File "/usr/local/lib/python3.9/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
    json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Чтобы избежать подобных проблем в вашем коде, вам следует сначала проверить код статуса ответа, а затем на основании статуса выполнить соответствующие действия. Например :-

url = 'http://warehouse:8001/books/'
response = requests.get(url)
if response.status_code != 200:
   return

response_data = response.json()
while 1:
    for counter, data in enumerate(response_data['results']):
        book, created = Book.objects.get_or_create(
            id=data['id'],
            ...
            ...
        )
Вернуться на верх