Уведомления

Группа в Telegram: @pythonsu

#1 Июль 18, 2012 14:01:05

Andrey Kh
От:
Зарегистрирован: 2011-10-15
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

xmpp.py в web-прложении

Не знаю в каком разделе форума лучше спросить, спрашиваю здесь.

Мне нужно отправлять сообщения в Jabber из web-приложения. Планирую использовать xmpp.py. Есть несколько вопросов по этой билиотеке. На xmpppy.sourceforge.net ответов не нашел.

Является ли xmpp.py потокобезопасной? Т.е. могу ли я открыть одно соединение на все приложение и отправлять через него сообщения из разных потоков? Или придется открывать соединение каждый раз заново? Возможно ли в xmpp.py создать пул соединений и нужно ли? Может существуют другие библиотеки, которые лучше подходят для моей задачи?

В качестве web-фреимворка используется Flask.



Офлайн

#2 Июль 19, 2012 06:33:50

unkier
От:
Зарегистрирован: 2009-11-05
Сообщения: 92
Репутация: +  2  -
Профиль  

xmpp.py в web-прложении

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



Офлайн

#3 Июль 19, 2012 10:08:21

Andrey Kh
От:
Зарегистрирован: 2011-10-15
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

xmpp.py в web-прложении

Попробую использовать Celery



Офлайн

#4 Июль 21, 2012 19:37:19

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

xmpp.py в web-прложении

А оно Вам точно надо через сервер перегонять? Может напрямую из javascript пойдет? например через такое: https://github.com/metajack/strophejs

Если же Вас интересуют библиотеки на питоне для работы с xmpp - то ПМСМ наиболее лучшая на сегодняшний день - SleekXMPP - https://github.com/fritzy/SleekXMPP



Отредактировано ziro (Июль 21, 2012 19:47:19)

Офлайн

#5 Июль 24, 2012 10:56:00

Andrey Kh
От:
Зарегистрирован: 2011-10-15
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

xmpp.py в web-прложении

Точно нужно с сервера посылать. Из JavaScript не пойдет.

Мне бы что-то вроде такого https://github.com/cstar/XMPPPool только для python. Пока прикрутил Celery, но считаю, что для такой задачи это лишний оверхед. Можно попробовать написать pool самому.



Офлайн

#6 Июль 24, 2012 12:26:00

unkier
От:
Зарегистрирован: 2009-11-05
Сообщения: 92
Репутация: +  2  -
Профиль  

xmpp.py в web-прложении

для джанги есть модуль рассылки уведомлений по xmpp. но там просто всё. сообщения пишутся в базу. потом по крону скрипт всё выбирает и отсылает.
если нужна просто рассылка то селери, ИМХО, из пушки по воробьям.
задачке вроде тривиальная и велосипедится за 10 минут.



Офлайн

#7 Июль 25, 2012 14:31:39

Andrey Kh
От:
Зарегистрирован: 2011-10-15
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

xmpp.py в web-прложении

Задача вроде тривиальная, но простого решения пока не вижу. Крон - еще больший костыль чем очередь, на мой взгляд. Слишком много нюансов возникает в случае его использования.



Офлайн

#8 Июль 26, 2012 06:05:40

unkier
От:
Зарегистрирован: 2009-11-05
Сообщения: 92
Репутация: +  2  -
Профиль  

xmpp.py в web-прложении

каких например нюансов ?



Офлайн

#9 Июль 26, 2012 11:55:41

Andrey Kh
От:
Зарегистрирован: 2011-10-15
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

xmpp.py в web-прложении

unkier
каких например нюансов ?
Как часто запускать скрипт? Как выбирать записи: по одной или все сразу? Что будет, если с предыдущего запуска в базе накопилось очень много сообщений? Если запускать очень часто, насколько это будет грузить сервер? Как разруливать ситуацию, когда скрипт еще не отработал, а крон уже запустил скрипт еще раз?

А вообще, мне нужно отправлять уведомления без больших задержек.



Офлайн

#10 Июль 26, 2012 18:09:09

unkier
От:
Зарегистрирован: 2009-11-05
Сообщения: 92
Репутация: +  2  -
Профиль  

xmpp.py в web-прложении

Andrey Kh
Как часто запускать скрипт? Как выбирать записи: по одной или все сразу? Что будет, если с предыдущего запуска в базе накопилось очень много сообщений? Если запускать очень часто, насколько это будет грузить сервер? Как разруливать ситуацию, когда скрипт еще не отработал, а крон уже запустил скрипт еще раз?

А вообще, мне нужно отправлять уведомления без больших задержек.

>Как часто запускать скрипт?
ну это вам решать ) смотря какая задержка приемлема

>Как выбирать записи: по одной или все сразу?
порциями по N штук

>Что будет, если с предыдущего запуска в базе накопилось очень много сообщений?
скриптик будет работать дольше обычного )

>Если запускать очень часто, насколько это будет грузить сервер?
нужно решить для себя насколько часто и сколько в реальности будет данных. у сервера баз данных судьба такая - стоять под нагрузкой ) какой нибудь быдлобложик на вордпресе для рендеринга 1 странички кучу раз дергает базу и это в порядке вещей.

>Как разруливать ситуацию, когда скрипт еще не отработал, а крон уже запустил скрипт еще раз?
или крон сам пусть смотрит не запущен ли уже скрипт. или скрипт пусть понимает что его пытаются запустить 2 раза и не запускается

З.Ы. всё зависит от конкретного слушая и нагрузок.
а зачем кстати крон ? почему не демон, который висит себе, и с некоторой частотой тянет из базы сообщения для отправки и отправляет если они есть. ?
вот и получилась у нас очередь задач самодельная )



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version