ФорумПрограммированиеPythonБатарейки → Django email queue

Django email queue

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Март 8, 2014, 12:59 п.п.

    Эдво, батарейку знаешь какую нить зачетную?

    Сапожник без сапог
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz Март 8, 2014, 1:06 п.п., спустя 7 минут 7 секунд

    да, +1 к вопросу

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Март 8, 2014, 1:10 п.п., спустя 4 минуты 14 секунд

    @Sinkler, подъебун ты несчастный :D

    Сапожник без сапог
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz Март 8, 2014, 1:11 п.п., спустя 56 секунд

    @Sinkler, подъебун ты несчастный :D

    @phpdude, молчи, твой день восьмое марта :D

    Спустя 12 сек.

    а, сегодня же

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Март 8, 2014, 1:15 п.п., спустя 4 минуты 15 секунд

    @Sinkler, ебать ты шутишь на упад

    Сапожник без сапог
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz Март 8, 2014, 1:29 п.п., спустя 14 минут 1 секунду

    t

  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz Март 8, 2014, 1:35 п.п., спустя 6 минут 2 секунды

    не понимаю я ваш таиландский юмор, короче 😞

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Март 8, 2014, 1:36 п.п., спустя 1 минуту 19 секунд

    не понимаю я ваш таиландский юмор, короче 😞

    @Sinkler, ты и русские не понимаешь)

    Сапожник без сапог
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Март 8, 2014, 1:42 п.п., спустя 5 минут 35 секунд

    не поверите как я увидел что на пыхе нет gzip для html :D

    увидел как сообщения один за другим отображаются с моим ужасным интернетом)))

    Сапожник без сапог
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Март 8, 2014, 1:45 п.п., спустя 3 минуты 2 секунды

    Я обычно велосипедил, чтобы можно было по полной кастомайзить. Иногда за основу брал celery и rabbitmq, но чаще просто в текущей БД

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Март 8, 2014, 1:53 п.п., спустя 7 минут 40 секунд

    Я обычно велосипедил, чтобы можно было по полной кастомайзить. Иногда за основу брал celery и rabbitmq, но чаще просто в текущей БД

    @adw0rd, 😧

    не наш путь)

    Сапожник без сапог
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Март 8, 2014, 1:59 п.п., спустя 6 минут 30 секунд

    Ну у меня не было проекта по глобальной рассылке писем, это всегда нужно было чтобы самому проекту рассылать письма и обычно они ходили через пул гугла, регалось N учеток (так как квоты по 500 писем через ящик в день) и все это так и работало

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Март 8, 2014, 2:01 п.п., спустя 1 минуту 33 секунды

    @adw0rd, понятно.

    ну фишка не в рассылке, а в том, что в общем то send_mail работает медленно(либо неуправляемо) по очевидной причине.

    Хочется какой то большей управляемости в уходящей корреспонденции. Хотя бы ошибки наблюдать + минимальный retry.

    Сапожник без сапог
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Март 8, 2014, 2:33 п.п., спустя 32 минуты 36 секунд

    Темку создал)

    Спустя 21 сек.

    тьфу блин, подраздел

    Сапожник без сапог
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Март 9, 2014, 6:55 п.п., спустя 1 день 4 часа 21 минуту

    Обошелся через celery короче (без всей этой хуйты с django-celery, повозкой багов гребаных) :-)

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

    Работает с celery 3.1+, они там серъезно поменяли интеграцию с django. Щас поддерживают жангу из коробки, в обход django-celery.

    https://gist.github.com/phpdude/9448981

    from celery import shared_task
    from celery.contrib.methods import task_method
    from django.core.mail.backends.smtp import EmailBackend as BaseEmailBackend
    class FakeLock(object):
    __enter__ = lambda x: None
    __exit__ = lambda a, b, c, d: None
    class EmailBackend(BaseEmailBackend):
    """
    A wrapper that manages the SMTP network connection asynchronously
    """
    def __init__(self, *args, **kwargs):
    super(EmailBackend, self).__init__(*args, **kwargs)
    # fake lock object, because base methods use this
    # celery doesn't support base RLock class serialization. Fixing it.
    self._lock = FakeLock()
    def send_messages(self, email_messages):
    self._send_messages.apply_async((self, email_messages))
    return len(email_messages)
    @shared_task(filter=task_method, name="send_emails")
    def _send_messages(self, email_messages):
    return super(EmailBackend, self).send_messages(email_messages)
    view raw asyncemail.py hosted with ❤ by GitHub
    # Path to class in your environment
    EMAIL_BACKEND = 'project.portal.backends.asyncemail.EmailBackend'
    # Don't forget add backend module to celery configuration, because it is not placed in app.tasks module and need to be defined.
    CELERY_IMPORTS = ['project.portal.backends.asyncemail']
    # json doesn't support serialization for python objects, only simple types.
    CELERY_TASK_SERIALIZER = 'pickle'
    view raw settings.py hosted with ❤ by GitHub

    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!