var a1 = [1,2,3,6];
var a2 = [1,2,3,5];
function check(a, b) {
return (a.length != b.length) ? false :
a.every(function(row, index) {
return a[index] == b[index];
});
}
check(a1, a2);
////// ИЛИ ///////
var a1 = [1,2,3,6];
var a2 = [1,2,3,6];
function check(a, b) {
return (a.length != b.length) ? false :
!(a.some(function(row, index) {
return a[index] != b[index];
}));
}
check(a1, a2)
До сих пор я не нашел "хорошего" решения для этого. У меня есть некоторые более строгие требования мягкого реального времени (делающий снимок от маркируемой картонной коробки) так, вероятно, один из подходов достаточно быстр для Вас. Я предполагаю, что электронные письма могут ожидать в течение нескольких минут.
До сих пор я не попробовал RabbitMQ и XMPP/ejabebrd для того, чтобы решить проблему, но они находятся в моем списке следующих вещей попробовать. RabbitMQ получил достойную возможность соединения Python в течение 2008 и существуют тонны библиотек XMPP.
, Но возможно все, в чем Вы нуждаетесь, является правильно настроенным mailserver на локальной машине. Это, вероятно, позволило бы Вам выводить письма синхронно в локальный mailserver и таким образом делать Ваш целый программный стек намного более простым.
В Вашем конкретном случае, где это - просто почтовая очередь, я, пустошь вынимает простой способ и использует django-почтовая-программа . Как хорошая сторона bonues существуют другие сменные проекты, которые достаточно умны для использования в своих интересах django-почтовой-программы, когда они видят его в стеке.
Что касается более общих решений очереди, я не был в состоянии попробовать любой из них все же, но вот список, которые выглядят более интересными мне:
Просто добавьте электронные письма к базе данных, и затем запишите, что другой сценарий работал некоторой утилитой планировщика задач (крон приходит на ум) послать электронные письма.
Если Вам уже установили MySQL, Вы могли бы составить таблицу для использования в качестве своего рода "списка ожидающих выполнения задач".
Потоки синхронно добавляют задания к таблице, и пакетная задача удаляет задания, поскольку они завершаются.
Тот путь, нет никакой потребности установить и узнать больше программное обеспечение, и это должно хорошо работать как персистентное хранилище задания, пока Вы не отправляете партии из электронной почты (как> 10/секунда).
Stompserver является хорошим вариантом. Это легко, легко установить и простой в использовании от Django/python.
У нас есть система с помощью stompserver в производстве для того, чтобы послать электронные письма и обработать другие задания асинхронно.
Django сохраняет электронные письма к базе данных, образцовый post_save обработчик в Django отправляет событие в stompserver, и stompserver передает событие потребительскому процессу, который делает асинхронную задачу (посылает электронное письмо).
Это увеличивается вполне приятно, потому что можно добавить потребительские процессы во времени выполнения - два потребителя могут послать вдвое больше электронных писем, и потребители могут быть на отдельных машинах. Одна небольшая сложность - то, что каждый потребности потребителя, которые должна знать ее собственная именованная очередь так Django, сколько потребителей доступно и отправляет событиям каждой очереди циклическим способом. (Два потребителя, слушающие на той же очереди, оба получат каждое сообщение = дублирование). Если Вы только хотите один потребительский процесс затем, это не проблема.
У нас ранее были процессы, которые опрашивали базу данных непрерывно относительно заданий, но находили, что она добавляла большую загрузку в систему, даже когда ничто не должно было быть обработано.
Вы можете посмотреть pymq . Он написан на python, обменивается данными по протоколу HTTP со своими клиентами и предоставляет множество вариантов мониторинга и управления очередями.