Найти - Пользователи
Полная версия: xmpp.py в web-прложении
Начало » Web » xmpp.py в web-прложении
1
Andrey Kh
Не знаю в каком разделе форума лучше спросить, спрашиваю здесь.

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

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

В качестве web-фреимворка используется Flask.
unkier
мне кажется что правильным вариантом будет, использовать очереди сообщений. тогда все вопросы и проблемы пропадут.
Andrey Kh
Попробую использовать Celery
ziro
А оно Вам точно надо через сервер перегонять? Может напрямую из javascript пойдет? например через такое: https://github.com/metajack/strophejs

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

Мне бы что-то вроде такого https://github.com/cstar/XMPPPool только для python. Пока прикрутил Celery, но считаю, что для такой задачи это лишний оверхед. Можно попробовать написать pool самому.
unkier
для джанги есть модуль рассылки уведомлений по xmpp. но там просто всё. сообщения пишутся в базу. потом по крону скрипт всё выбирает и отсылает.
если нужна просто рассылка то селери, ИМХО, из пушки по воробьям.
задачке вроде тривиальная и велосипедится за 10 минут.
Andrey Kh
Задача вроде тривиальная, но простого решения пока не вижу. Крон - еще больший костыль чем очередь, на мой взгляд. Слишком много нюансов возникает в случае его использования.
unkier
каких например нюансов ?
Andrey Kh
unkier
каких например нюансов ?
Как часто запускать скрипт? Как выбирать записи: по одной или все сразу? Что будет, если с предыдущего запуска в базе накопилось очень много сообщений? Если запускать очень часто, насколько это будет грузить сервер? Как разруливать ситуацию, когда скрипт еще не отработал, а крон уже запустил скрипт еще раз?

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

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

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

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

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

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

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

З.Ы. всё зависит от конкретного слушая и нагрузок.
а зачем кстати крон ? почему не демон, который висит себе, и с некоторой частотой тянет из базы сообщения для отправки и отправляет если они есть. ?
вот и получилась у нас очередь задач самодельная )
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB