2026-03-28 06:01:14 [crawlers.middlewares.monitoring_spider_middleware] ERROR: Field year is not nullable
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 106, in process_sync
for r in iterable:
File "/usr/src/app/crawlers/spiders/bcauk.py", line 735, in parse_listings
yield from self._process_listing_item(item_to_scrape)
File "/usr/src/app/crawlers/spiders/bcauk.py", line 478, in _process_listing_item
item = self._extract_listing_item(item_to_scrape)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/spiders/bcauk.py", line 804, in _extract_listing_item
item["year"] = year
~~~~^^^^^^^^
File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
raise ValueError(f"Field {key} is not nullable")
ValueError: Field year is not nullable
2026-03-28 06:01:14 [crawlers.middlewares.monitoring_spider_middleware] ERROR: Field year is not nullable
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/id_gen_middleware.py", line 20, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/utils/asyncgen.py", line 17, in as_async_generator
for r in it:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 109, in process_sync
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 106, in process_sync
for r in iterable:
File "/usr/src/app/crawlers/spiders/bcauk.py", line 735, in parse_listings
yield from self._process_listing_item(item_to_scrape)
File "/usr/src/app/crawlers/spiders/bcauk.py", line 478, in _process_listing_item
item = self._extract_listing_item(item_to_scrape)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/spiders/bcauk.py", line 804, in _extract_listing_item
item["year"] = year
~~~~^^^^^^^^
File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
raise ValueError(f"Field {key} is not nullable")
ValueError: Field year is not nullable
2026-03-28 06:01:14 [crawlers.middlewares.monitoring_spider_middleware] ERROR: Field year is not nullable
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/report_download_middleware.py", line 32, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/id_gen_middleware.py", line 20, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/utils/asyncgen.py", line 17, in as_async_generator
for r in it:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 109, in process_sync
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 106, in process_sync
for r in iterable:
File "/usr/src/app/crawlers/spiders/bcauk.py", line 735, in parse_listings
yield from self._process_listing_item(item_to_scrape)
File "/usr/src/app/crawlers/spiders/bcauk.py", line 478, in _process_listing_item
item = self._extract_listing_item(item_to_scrape)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/spiders/bcauk.py", line 804, in _extract_listing_item
item["year"] = year
~~~~^^^^^^^^
File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
raise ValueError(f"Field {key} is not nullable")
ValueError: Field year is not nullable
2026-03-28 06:01:14 [crawlers.middlewares.monitoring_spider_middleware] ERROR: Field year is not nullable
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/photo_download_middleware.py", line 42, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/report_download_middleware.py", line 32, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/id_gen_middleware.py", line 20, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/utils/asyncgen.py", line 17, in as_async_generator
for r in it:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 109, in process_sync
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 106, in process_sync
for r in iterable:
File "/usr/src/app/crawlers/spiders/bcauk.py", line 735, in parse_listings
yield from self._process_listing_item(item_to_scrape)
File "/usr/src/app/crawlers/spiders/bcauk.py", line 478, in _process_listing_item
item = self._extract_listing_item(item_to_scrape)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/spiders/bcauk.py", line 804, in _extract_listing_item
item["year"] = year
~~~~^^^^^^^^
File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
raise ValueError(f"Field {key} is not nullable")
ValueError: Field year is not nullable
2026-03-28 06:01:14 [crawlers.middlewares.monitoring_spider_middleware] ERROR: Field year is not nullable
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/local/lib/python3.11/dist-packages/scrapy/spidermiddlewares/depth.py", line 35, in process_spider_output_async
async for r in result or ():
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/photo_download_middleware.py", line 42, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/report_download_middleware.py", line 32, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/id_gen_middleware.py", line 20, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/utils/asyncgen.py", line 17, in as_async_generator
for r in it:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 109, in process_sync
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 106, in process_sync
for r in iterable:
File "/usr/src/app/crawlers/spiders/bcauk.py", line 735, in parse_listings
yield from self._process_listing_item(item_to_scrape)
File "/usr/src/app/crawlers/spiders/bcauk.py", line 478, in _process_listing_item
item = self._extract_listing_item(item_to_scrape)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/spiders/bcauk.py", line 804, in _extract_listing_item
item["year"] = year
~~~~^^^^^^^^
File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
raise ValueError(f"Field {key} is not nullable")
ValueError: Field year is not nullable
2026-03-28 06:01:15 [crawlers.middlewares.monitoring_spider_middleware] ERROR: Field year is not nullable
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/local/lib/python3.11/dist-packages/scrapy/spidermiddlewares/urllength.py", line 30, in process_spider_output_async
async for r in result or ():
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/local/lib/python3.11/dist-packages/scrapy/spidermiddlewares/depth.py", line 35, in process_spider_output_async
async for r in result or ():
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/photo_download_middleware.py", line 42, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/report_download_middleware.py", line 32, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/id_gen_middleware.py", line 20, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/utils/asyncgen.py", line 17, in as_async_generator
for r in it:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 109, in process_sync
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 106, in process_sync
for r in iterable:
File "/usr/src/app/crawlers/spiders/bcauk.py", line 735, in parse_listings
yield from self._process_listing_item(item_to_scrape)
File "/usr/src/app/crawlers/spiders/bcauk.py", line 478, in _process_listing_item
item = self._extract_listing_item(item_to_scrape)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/spiders/bcauk.py", line 804, in _extract_listing_item
item["year"] = year
~~~~^^^^^^^^
File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
raise ValueError(f"Field {key} is not nullable")
ValueError: Field year is not nullable
2026-03-28 06:01:15 [crawlers.middlewares.monitoring_spider_middleware] ERROR: Field year is not nullable
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/local/lib/python3.11/dist-packages/scrapy/spidermiddlewares/referer.py", line 355, in process_spider_output_async
async for r in result or ():
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/local/lib/python3.11/dist-packages/scrapy/spidermiddlewares/urllength.py", line 30, in process_spider_output_async
async for r in result or ():
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/local/lib/python3.11/dist-packages/scrapy/spidermiddlewares/depth.py", line 35, in process_spider_output_async
async for r in result or ():
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/photo_download_middleware.py", line 42, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/report_download_middleware.py", line 32, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/id_gen_middleware.py", line 20, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/utils/asyncgen.py", line 17, in as_async_generator
for r in it:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 109, in process_sync
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 106, in process_sync
for r in iterable:
File "/usr/src/app/crawlers/spiders/bcauk.py", line 735, in parse_listings
yield from self._process_listing_item(item_to_scrape)
File "/usr/src/app/crawlers/spiders/bcauk.py", line 478, in _process_listing_item
item = self._extract_listing_item(item_to_scrape)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/spiders/bcauk.py", line 804, in _extract_listing_item
item["year"] = year
~~~~^^^^^^^^
File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
raise ValueError(f"Field {key} is not nullable")
ValueError: Field year is not nullable
2026-03-28 06:01:15 [scrapy.core.scraper] ERROR: Spider error processing <GET https://www.bca.co.uk/api/search?q=&pageSize=100&page=1&sort=MostRecentlyAdded> (referer: https://www.bca.co.uk/search)
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/scrapy/utils/defer.py", line 295, in aiter_errback
yield await it.__anext__()
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/utils/python.py", line 374, in __anext__
return await self.data.__anext__()
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/utils/python.py", line 355, in _async_chain
async for o in as_async_generator(it):
File "/usr/local/lib/python3.11/dist-packages/scrapy/utils/asyncgen.py", line 14, in as_async_generator
async for r in it:
File "/usr/local/lib/python3.11/dist-packages/scrapy/utils/python.py", line 374, in __anext__
return await self.data.__anext__()
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/utils/python.py", line 355, in _async_chain
async for o in as_async_generator(it):
File "/usr/local/lib/python3.11/dist-packages/scrapy/utils/asyncgen.py", line 14, in as_async_generator
async for r in it:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/local/lib/python3.11/dist-packages/scrapy_zyte_api/_middlewares.py", line 206, in process_spider_output_async
async for item_or_request in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 42, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/local/lib/python3.11/dist-packages/scrapy/spidermiddlewares/referer.py", line 355, in process_spider_output_async
async for r in result or ():
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/local/lib/python3.11/dist-packages/scrapy/spidermiddlewares/urllength.py", line 30, in process_spider_output_async
async for r in result or ():
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/local/lib/python3.11/dist-packages/scrapy/spidermiddlewares/depth.py", line 35, in process_spider_output_async
async for r in result or ():
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/photo_download_middleware.py", line 42, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/report_download_middleware.py", line 32, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 121, in process_async
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 118, in process_async
async for r in iterable:
File "/usr/src/app/crawlers/middlewares/id_gen_middleware.py", line 20, in process_spider_output
async for item in result:
File "/usr/local/lib/python3.11/dist-packages/scrapy/utils/asyncgen.py", line 17, in as_async_generator
for r in it:
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 109, in process_sync
exception_result = self._process_spider_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 150, in _process_spider_exception
result = method(response=response, exception=exception, spider=spider)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/middlewares/monitoring_spider_middleware.py", line 73, in process_spider_exception
raise exception
File "/usr/local/lib/python3.11/dist-packages/scrapy/core/spidermw.py", line 106, in process_sync
for r in iterable:
File "/usr/src/app/crawlers/spiders/bcauk.py", line 735, in parse_listings
yield from self._process_listing_item(item_to_scrape)
File "/usr/src/app/crawlers/spiders/bcauk.py", line 478, in _process_listing_item
item = self._extract_listing_item(item_to_scrape)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/crawlers/spiders/bcauk.py", line 804, in _extract_listing_item
item["year"] = year
~~~~^^^^^^^^
File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
raise ValueError(f"Field {key} is not nullable")
ValueError: Field year is not nullable
2026-03-28 06:14:39 [crawlers.pipelines.post_to_api] ERROR: bca.uk, item_id bd770c48-f883-5517-b128-d164cb57cd7f: Failed to post item to https://api.app.infinit.cc/api/command/Alx.Cars.Contracts.Internal.Sourcing.AddListing: 422 Client Error: Unprocessable Entity for url: https://api.app.infinit.cc/api/command/Alx.Cars.Contracts.Internal.Sourcing.AddListing
| Status Code: 422
| Response Content: {"ValidationErrors":[{"PropertyName":"Color","ErrorMessage":"color value can only be expressed in letters","ErrorCode":0}],"WasSuccessful":false}
| Response Headers: {'Content-Type': 'application/json', 'Date': 'Sat, 28 Mar 2026 06:14:38 GMT', 'Request-Context': 'appId=cid-v1:1a14ebe8-38cd-4629-ab2d-40684250fa5b', 'Server': 'Kestrel', 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains; preload', 'Transfer-Encoding': 'chunked'}
2026-03-28 06:14:51 [crawlers.pipelines.post_to_api] ERROR: bca.uk, item_id fcf660a7-993b-56ef-b878-05e41cdaa0b9: Failed to post item to https://api.app.infinit.cc/api/command/Alx.Cars.Contracts.Internal.Sourcing.AddListing: 422 Client Error: Unprocessable Entity for url: https://api.app.infinit.cc/api/command/Alx.Cars.Contracts.Internal.Sourcing.AddListing
| Status Code: 422
| Response Content: {"ValidationErrors":[{"PropertyName":"Color","ErrorMessage":"color value can only be expressed in letters","ErrorCode":0}],"WasSuccessful":false}
| Response Headers: {'Content-Type': 'application/json', 'Date': 'Sat, 28 Mar 2026 06:14:50 GMT', 'Request-Context': 'appId=cid-v1:1a14ebe8-38cd-4629-ab2d-40684250fa5b', 'Server': 'Kestrel', 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains; preload', 'Transfer-Encoding': 'chunked'}