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'],
...
...
)