2

Мне нужно выполнить задачу очистки для сбора данных для приложения App Engine (Java).Легче ли очистить данные для приложения gae в dev и загрузить его в prod, или вы должны очистить в prod?

Я не уверен, что лучше всего - очистить данные в режиме разработки и загрузить его, чтобы пробовать или очищать его, пока приложение работает на производстве.

Это имеет значение?

Существуют ли какие-либо трудности с привлечением большого количества данных из одной среды в другую (dev->prod или prod->dev)?

ответ

1

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

6

Сам сервер-разработчик, вероятно, не является отличным инструментом для скремблирования; он однопоточный и (по крайней мере, для python, реализация Java может быть сильно различаться), хранилище данных довольно ужасно, если хранить большие объемы данных.

Однако, в зависимости от того, что вы очищаете, производственные серверы могут быть не совсем подходящими для задачи; если сайтам может потребоваться более 10 секунд для ответа на запрос, API-интерфейс urlfetch истечет. Если вы можете быть уверены, что это не будет проблемой, возможно, удобнее делать скребок в производстве и писать непосредственно в хранилище данных.

Если нет, возможно, имеет смысл делать скребки с помощью автономного инструмента, а затем помещать данные в производственный хранилище либо с помощью веб-службы RESTful, либо с помощью удаленного API.


EDIT: Теперь производственные серверы могут установить 10 минут ожидания на urlfetches инициированных из TaskQueue или хрон рабочих мест, так что эти возражения могут не применять больше.

+1

+1 сервер-разработчик - это игрушка. – systempuntoout

1

Посмотрите на this question, как настроить API-адрес remore для Java, чтобы использовать загрузчик объемных данных Python. Вы также можете написать пользовательский загрузчик.