scrapy: как спать паука, пока нет запроса [дубликат]

Я использую SQL Server 2016 и Window 10.

Прежде всего, нужно разрешить удаленное подключение к SQL Сервер. Я сделал, чтобы ввести sqlservermanager13.msc в меню «Пуск», чтобы открыть диспетчер конфигурации SQL Server. Убедитесь, что статус TCP / IP включен.

Проверьте номер своего TCP-порта, дважды щелкнув имя протокола TCP / IP. Обычно это по умолчанию 1433.

Следующие процедуры настраивают брандмауэр Windows с помощью оснастки «Брандмауэр Windows с расширенной безопасностью» Microsoft Management Console (MMC) -в. Брандмауэр Windows с расширенной безопасностью настраивает только текущий профиль.

Чтобы открыть порт в брандмауэре Windows для доступа к TCP

  1. В меню «Пуск» выберите «Выполнить», введите WF.msc и нажмите «ОК».
  2. В брандмауэре Windows с расширенной безопасностью на левой панели щелкните правой кнопкой мыши Правила входящих сообщений и выберите «Новое правило» на панели действий.
  3. В диалоговом окне «Тип правила» выберите Порт, а затем нажмите «Далее».
  4. В диалоговом окне «Протокол и порты» выберите TCP. Выберите «Определенные локальные порты», а затем введите номер порта экземпляра Database Engine, например 1433 для экземпляра по умолчанию. Нажмите «Далее».
  5. В диалоговом окне «Действие» выберите «Разрешить подключение» и нажмите «Далее».
  6. В диалоговом окне «Профиль» выберите любые профили, описывающие среду подключения к компьютеру, когда вы хотите подключиться к механизму базы данных, а затем нажмите «Далее».
  7. В диалоговом окне «Имя» введите имя и описание этого правила и нажмите «Готово».

Еще одна вещь, которую нужно настроить.

Чтобы открыть доступ к SQL Server при использовании динамических портов

  1. В меню «Пуск» выберите «Выполнить», введите «WF» .msc, а затем нажмите «ОК».
  2. В брандмауэре Windows с расширенной безопасностью на левой панели щелкните правой кнопкой мыши «Правила входящих» и выберите «Новое правило» на панели действий.
  3. В диалоговом окне «Тип правила» выберите «Программа» и нажмите «Далее».
  4. В диалоговом окне «Программа» выберите «Путь к этой программе». Нажмите «Обзор» и перейдите к экземпляру SQL Server, к которому вы хотите получить доступ через брандмауэр, и нажмите «Открыть». По умолчанию SQL Server находится в папке C: \ Program Files \ Microsoft SQL Server \ MSSQL13.MSSQLSERVER \ MSSQL \ Binn \ Sqlservr.exe. Нажмите «Далее».
  5. В диалоговом окне «Действие» выберите «Разрешить подключение» и нажмите «Далее».
  6. В диалоговом окне «Профиль» выберите все профили, описывающие среду подключения к компьютеру, когда вы хотите подключиться к движку базы данных и нажмите «Далее».
  7. В диалоговом окне «Имя» введите имя и описание этого правила и нажмите «Готово».

Взгляните на Microsoft doucmentation Настройте брандмауэр Windows для доступа к базе данных

3
задан jophab 13 February 2017 в 17:53
поделиться

1 ответ

Я лично рекомендую начинать новый паук каждый раз, когда вам нужно что-то сканировать, но если вы хотите сохранить этот процесс в живых, я бы рекомендовал использовать сигнал spider_idle :

@classmethod
def from_crawler(cls, crawler, *args, **kwargs):
    spider = super(MySpider, cls).from_crawler(crawler, *args, **kwargs)
    crawler.signals.connect(spider.spider_closed, signals.spider_closed)
    crawler.signals.connect(spider.spider_idle, signals.spider_idle)
    return spider
...
def spider_idle(self, spider):
    # read database again and send new requests

    # check that sending new requests here is different
    self.crawler.engine.crawl(
                    Request(
                        new_url,
                        callback=self.parse),
                    spider
                )

Здесь вы отправляете новые запросы до того, как паук действительно закроется.

3
ответ дан eLRuLL 18 August 2018 в 06:13
поделиться
  • 1
    Спасибо за ваш ответ, я хотел бы сохранить его в живых, потому что я хочу сканировать в реальном времени, я мог бы использовать cron, но если мой паук занимает больше времени, задачи будут стекироваться и могут привести к плохому поведению. Кажется, что вы показываете мне правильное направление, но мой паук закрывается после того, как я один раз вхожу в мой простой метод. Есть идеи ? – RogerFromSpace 4 January 2017 в 10:01
  • 2
    Я добавил raise DontCloseSpider и конец my spider_idle, и мой паук теперь работает навсегда. Однако кажется, что он только считывает url из базы данных один раз, но я вижу, как мой регистратор продолжает говорить «я жив». – RogerFromSpace 4 January 2017 в 10:15
  • 3
    Я не могу помочь вам в чем-то, чего я не вижу, не могли бы вы обновить свой код? – eLRuLL 4 January 2017 в 15:05
  • 4
    Я редактировал мой вопрос, спасибо – RogerFromSpace 4 January 2017 в 16:05
  • 5
    где находится "I'm alive" журнал? – eLRuLL 4 January 2017 в 16:15
Другие вопросы по тегам:

Похожие вопросы: