Я попробовал вышеуказанное решение, но я счел его непригодным для больших объемов данных. Затем я обнаружил функцию потока:
MongoClient.connect("...", function(err, db){
var c = db.collection('yourCollection');
var s = c.find({/* your query */}).stream();
s.on('data', function(doc){
c.update({_id: doc._id}, {$set: {name : doc.firstName + ' ' + doc.lastName}}, function(err, result) { /* result == true? */} }
});
s.on('end', function(){
// stream can end before all your updates do if you have a lot
})
})
Веб-сервис является лучшим способом, но существуют некоторые протесты:
Я не могу думать о способе сделать это без включения имени пользователя и пароля для smtp сервера в приложении...
Вам только нужны имя пользователя и пароль для аутентификации себя к smarthost. Вам не нужен он для отправки почты непосредственно, Вам нужен он для отправки почты через реле, например, почтового сервера ISP. Совершенно возможно послать электронное письмо без аутентификации - вот почему, спам настолько трудно остановить.
Однако некоторый исходящий трафик блока ISPs на порте 25, таким образом, самой устойчивой альтернативой является POST HTTP, который вряд ли будет заблокирован чем-либо. Обязательно выберите URL, которым Вы не будете чувствовать себя ограниченными позже, или еще лучше, иметь приложение, периодически проверяют на обновления, поэтому если Вы решаете изменить домены или что-то, можно продвинуть обновление заранее.
Безопасность не является действительно проблемой. Можно довольно легко отбросить данные спама, таким образом, все, что действительно касается Вас, - перешел ли кто-то к проблеме создать фальшивку tracebacks для питания с Вами, и это - очень маловероятная ситуация.
Что касается полезной нагрузки, PyCrash может помочь Вам с этим.
Веб-хит является способом пойти, но удостоверяться Вы выбираете хороший URL - Ваше приложение будет поражать его в течение последующих лет.
Используете ли Вы SMTP или HTTP для отправки данных, у Вас должно быть имя пользователя/пароль в приложении для предотвращения просто любого от отправки случайных данных Вам.
Имея это в виду, я подозреваю, что было бы легче использовать SMTP, а не HTTP для отправки данных.
Некоторый простой веб-сервис был бы достаточен. Необходимо было бы рассмотреть безопасность так не только, любой мог выполнить запросы к сервису..
В более крупном масштабе мы рассмотрели систему обмена сообщениями JMS. Поместите сериализованный объект данных, содержащих сообщение traceback/error в очередь, и используйте его каждый x минуты, генерировав отчеты/предупреждения от тех данных.