Как Вы сохраняете два связанных, но отдельный, системы в синхронизации друг с другом?

Этот сайт использует простое обнаружение ботов. Скорее всего, вы используете пользовательский агент scrapy по умолчанию. Таким образом, вместо этого вам нужно установить реального агента пользователя в settings.py:

USER_AGENT = '[replace with a real user agent]'

См. Документацию .

После этого вы получите некоторые результаты. Однако ваш XPath также неверен. Внутри цикла for, когда вы делаете относительный XPath, он должен начинаться с .//a/span.... Здесь вы найдете причину: https://docs.scrapy.org/en/latest/topics/selectors.html#working-with-relative-xpaths

19
задан jeremcc 17 August 2008 в 02:57
поделиться

5 ответов

Это - довольно общий сценарий интеграции, я верю. Лично, я думаю, что решение для асинхронной передачи сообщений с помощью очереди идеально.

необходимо смочь достигнуть синхронизации псевдореального времени без издержек или сложности чего-то как репликация.

Синхронные веб-сервисы не идеальны, потому что Ваш код должен будет быть очень сложным для обработки сценариев отказа. Что происходит, когда одна система перезапущена, в то время как другой продолжает публиковать изменения? Передающая система получает тайм-ауты? Что это делает с теми? Если Вы не будете готовы потерять данные, Вы захотите, чтобы своего рода транзакционная очередь (как MSMQ) получила уведомления о внесении изменений и заботилась о проверке, что они добираются до другой системы. Если любая система снижается, изменения (передал как сообщения), просто накопится и как только соединение может быть установлено, сервер перезапуска обработает все сообщения с очередями и нагонит, делая целостность системы очень, намного легче достигнуть.

существуют некоторые инструменты с открытым исходным кодом, которые могут действительно сделать это легким для Вас, если Вы используете.NET (особенно, если Вы хотите использовать MSMQ).

  1. nServiceBus общественным транспортом Udi Dahan
  2. Dru Sellers и Chris Patterson

существует коммерческие продукты также, и если Вы рассматриваете коммерческую возможность, см. здесь для списка опций на.NET. Конечно, WCF может сделать асинхронный обмен сообщениями с помощью привязки MSMQ, но инструмент как nServiceBus или MassTransit даст Вам, очень простое Отправляет/Получает или API Pub/Sub, который сделает Ваше требование очень простым заданием.

при использовании Java существует любое количество реализаций сервисной шины с открытым исходным кодом, которые сделают этот вид из двунаправленной, асинхронной передачи сообщений снимком, как Мул или возможно просто ActiveMQ.

можно также хотеть рассмотреть чтение Udi Dahan' блог с, слушая некоторые его подкасты. Вот некоторые более хорошие ресурсы для запущения Вас.

20
ответ дан 30 November 2019 в 04:29
поделиться

У нас есть магазин как у клиента с тремя хранилищами, подключенными к тому же VPN
, Два из магазинов имеют компьютер, работающий как "сервер" за тем магазином и, третий имеет "основную базу данных"
Для синхронизации всех с ведущим устройством, у нас нет лучшего решения, но это работает: существует выделенный ПК, запускающий приложение, которое проверяет метку времени каждой записи в каждой таблице двух хранилищ и если это отличается, который в прошлый раз Вы синхронизируете, это копирует результаты
Примечание, что это работает оба пути. Т.е. если Вы обновите продукт в основной базе данных, то это изменение распространит в другие два магазина. Если у Вас будет новый порядок в одном из магазинов, то он будет передан "ведущему устройству".
С некоторой оптимизацией у Вас могут быть все магазины, синхронизируются приблизительно за 20 минут

1
ответ дан 30 November 2019 в 04:29
поделиться

Недавно я имел большой успех с Брокером SQL Server Service, который предлагает надежную, сохраненную асинхронную передачу сообщений из поля с очень небольшим количеством боли реализации.

  • Это быстро для установки и поскольку Вы узнаете больше, можно использовать некоторые из большего количества расширенных функций.
  • Неизвестный большинству, это - также часть настольных выпусков, таким образом, это может использоваться в качестве системы обмена сообщениями рабочей станции
  • , Если у Вас есть существующие навыки T-SQL, они могут быть усилены как весь код, чтобы считать и записать, что сообщения сделаны в SQL
  • , Это ослепляюще быстро

, Это значительно под - раздутая часть SQL Server и определенно стоящее взгляда.

1
ответ дан 30 November 2019 в 04:29
поделиться

Я на полпути через подобный проект кроме, у меня есть несколько сайтов, которые должны сохранить в синхронизации по медленным соединениям (коммутируемый доступ в некоторых случаях).

Во-первых необходимо отследить изменения, если можно использовать SQL 2008 (даже версия Экспресса достаточно, если предел на 2 ГБ не будет проблемой), то это упростит боль значительно, просто включит Отслеживание изменений на базе данных и каждой таблице. Мы используем SQL Server 2008 в главном офисе с расширенной схемой и SQL Express 2008 на каждом сайте с подмножеством данных и ограниченной схемы.

, Во-вторых, необходимо отследить изменения, , Sync Services добивается цели приятно и поддержки с помощью шлюза WCF в основную базу данных. В этом примере необходимо будет использовать использование Sync Клиент SQL Express образец как начальная точка, отметить, что это основано на SQL 2005, таким образом, необходимо будет обновить его для использования в своих интересах функций Change Tracking в 2008. По умолчанию Sync Services использует SQL CE на клиентах, которые я уверен, не находится достаточно в Вашем случае. Вам будет нужен сервис, который работает на Вашем веб-сервере, который периодически (мог быть так же часто как каждые 10 секунд если Вы хотите) выполняет Синхронизирование () метод. Это скажет Вашу основную базу данных об изменениях, внесенных локально, и затем попросит у сервера всех изменений, внесенных там. Можно настроить получение и применить код SQL для вызова хранимых процедур, и можно добавить обработчики событий, чтобы обработать конфликты (например, Клиентское Обновление по сравнению с Обновлением Сервера) и разрешить их соответственно в каждом конце.

3
ответ дан 30 November 2019 в 04:29
поделиться

Я сказал бы, просто имеют задание, которое копирует данные во входной таблице базы данных паба в частную базу данных незаконченная таблица. Затем, после того как Вы обновляете данные по частной стороне, имеют копируемый в общедоступную сторону. Если у Вас нет ни одних из тиражируемых данных на общедоступной стороне, обновил его, должно быть довольно легкое решение для репликации транзакций.

0
ответ дан 30 November 2019 в 04:29
поделиться
Другие вопросы по тегам:

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