Django: Почему моя пользовательская команда запускает сервер?

Я пытаюсь использовать Scrapy с Django, поэтому я определил следующую пользовательскую команду управления:

from django.core.management.base import BaseCommand
from scraper.spiders.sparerooms import SpareroomsSpider
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings

from scrapy.settings import Settings
import os

class Command(BaseCommand):
  help = "Release the spiders"

  def handle(self, *args, **options):
      os.environ.setdefault('SCRAPY_SETTINGS_MODULE', 'scraper.settings')
      
      process = CrawlerProcess(get_project_settings())
      process.crawl(SpareroomsSpider)
      process.start()

Когда я выполняю команду python3 manager.py crawl сервер инстанцируется; я вижу, что библиотеки и файлы из другого приложения загружаются до начала ползания, что очень раздражает, так как мне нужно загрузить большое количество данных (30 минут ожидания).

Это не было бы такой проблемой, если бы сервер был пригоден для использования. Однако, request.META не установлен (невозможно использовать request.build_absolute_uri()) и конечные точки не достижимы Error 111: Connection Refused.

Все это работает нормально, если я запускаю сервер с помощью python3 manage.py runserver и затем использую пользовательскую команду (которая снова загружает сервер).

Что я делаю неправильно? Можно ли это исправить?

Сервер не запущен, он проверяется django автоматически.

Это поведение можно отключить, установив requires_system_checks на False следующим образом;

class Command(BaseCommand):
  help = "Release the spiders"
  requires_system_checks = False

  def handle(self, *args, **options):
      # code goes here

Или с помощью аргумента skip-checks с командой;

python3 manage.py crawl --skip-checks
Вернуться на верх