Чат-сервер/система чата, основанная на протоколе AMQP (Rabbitmq Message Broker), написанный на Python с использованием Tornado и Rabbitmq.
Ссылка: http://rabbitchat.readthedocs.io/en/latest/index.html
Ссылка: https://pypi.python.org/pypi/rabbitchat
| Автор: | Анирбан Рой Дас |
|---|---|
| Электронная почта: | [email protected] |
| Авторские права (C): | 2017, Анирбан Рой Дас <[email protected]> |
Проверьте файл rabbitChat/LICENSE на полное уведомление об авторском праве.
Rabbitchat - это очень простой сервер чата, который можно настроить локально для чата в вашей локальной сети. Он поддерживает оба общего чата среди всех участников, связанных одновременно в определенное время, а также в частном чате между этими отдельными участниками.
Он использует протокол AMQP для реализации системы передачи сообщений в реальном времени. AMQP реализуется на многих языках и во многих программных кровообращениях, когда -то из такого IS IS RabbitMQ, который является посредником, внедряющим протокол AMQP.
Соединение создается с использованием протокола Sockjs. Sockjs реализован на многих языках, в основном в JavaScript, чтобы общаться с серверами в режиме реального времени, что пытается создать дуплексное двунаправленное соединение между клиентом (браузер) и сервером . На этом сервер также должен реализовать протокол Sockjs . Таким образом, используя библиотеку Sockjs-Tornado, которая обнажает протокол Sockjs на сервере Tornado.
Сначала он пытается создать подключение к WebSocket, и, если оно не удается, то он отступает на другие транспортные механизмы, такие как Ajax , длительный опрос и т. Д. После установки соединения, сервер Tornado ** (Sockjs-Tornado) ** подключается к Rabbitmq через протокол AMQP с использованием клиентского библиотечного библиотеки AMQP Pika.
Таким образом, соединение является веб-браузером с торнадо с Rabbitmq и наоборот.
| sockjs-client: | Advanced WebSocket JavaScript Client |
|---|---|
| Торнадо: | Async Python Web Library + веб -сервер |
| sockjs-tornado: | Sockjs WebSocket Server реализация для торнадо |
| AMQP: | Протокол очереди на предварительные сообщения, используемый в промежуточном программном обеспечении, ориентированном на сообщения |
| Пика: | Клиентская библиотека AMQP Python |
| Rabbitmq: | Брокер сообщений, реализующий AMQP |
| pytest: | Библиотека тестирования Python и тестовый бегун с потрясающим тестовым дискокатом |
| Pytest-Flask: | Pytest Plugin для приложений Flask, для тестирования приложений Fask с использованием библиотеки Pytest. |
| Uber's Test-Double: | Проверьте двойную библиотеку для Python, хорошая альтернатива макете библиотеки |
| Дженкинс (необязательно): | Самостоятельный CI-сервер |
| Travis-Ci (необязательно): | Размещенный CI-сервер бесплатно для Projecs с открытым исходным кодом |
| Docker: | Инструмент контейнеризации для лучших DevOps |
Есть два типа установки. Один использует Rabbitchat в качестве бинарного путем установки от PIP и напрямую запускаю приложение в локальной машине. Другим методом является запуск приложения от Docker. Отсюда и другой набор шагов установки для варианта использования Docker.
Чтобы защитить секретную и конфиденциальную утечку данных с помощью вашего GIT Commits в Public Github Repo, проверьте git-secrets .
Этот проект GIT Secrets помогает предотвратить утечку секретов по ошибке.
Видите ли, в технических характеристиках упоминается так много технологий, и все же зависимости всего два. Это сила докера.
Шаг 1 - Установите Docker
Следуйте моему другому проекту GitHub, где упоминается все, что связано с DevOps и Scripts, наряду с настройкой среды разработки для использования Docker.
- Проект: https://github.com/anirbanroydas/devops
Шаг 2 - Установите Make
# (Mac OS) $ Brew Install Automake # (Ubuntu) $ sudo apt-get $ sudo apt-get install Make
Шаг 3 - Установка зависимости
Установите следующие зависимости на местной машине разработки, которая будет использоваться в различных сценариях.
$ pip установить Rabbitchat
Если выше, зависимости не устанавливаются вышеуказанной командой, то используйте приведенные ниже шаги, чтобы установить их один за другим.
Шаг 1 - Установите PIP
Следуйте приведенным ниже методам установки PIP. Один из них может помочь вам установить PIP в вашей системе.
- Метод 1 - https://pip.pypa.io/en/stable/installing/
- Метод 2- http://ask.xmodulo.com/install-pip-linux.html
- Метод 3 - Если вы установили Python на Mac OS X через
brew install python, то PIP уже установлен вместе с Python.Шаг 2 - Установите торнадо
$ pip установить торнадоШаг 3 - Установите Sockjs -Tornado
$ pip установить sockjs-tornadoШаг 4 - Установите Pika
$ pip установить пикаШаг 5 - Установите Rabbitmq
Для пользователей
Mac1. Бросочная установка Rabbitmq
$ brew установить rabbitmq
- Настройте Rabbitmq, перейдите по этой ссылке, этой и этой.
Для пользователей
Ubuntu/Linux1. Включить хранилище приложения RabbitMQ
$ echo "deb http://www.rabbitmq.com/debian/ testing main" >> /etc/apt/sources.list2. Добавьте ключ проверки для пакета
$ wget -o http://www.rabbitmq.com/rabbitmq-signing-key-public.asc | sudo apt -ключ добавить -3. Обновите источники с нашим новым дополнением сверху выше
$ apt-get обновление4. И, наконец, скачать и установить Rabbitmq
$ sudo apt-get установить rabbitmq-server
- Настройте Rabbitmq, перейдите по этой ссылке, этой и этой.
Если вы используете проект в настройке CI (например, Travis, Jenkins), то, на каждом толчке к GitHub, вы можете настроить свой трубопровод Travis Build или Jenkins. Трэвис будет использовать файл .travis.yml , а Jenknis будет использовать Jenkinsfile для выполнения своей работы. Теперь, если вы используете Travis, затем запустите конкретные команды настройки Travis, а для Jenkins сначала запустите команды Denkins Special Setup. Вы также можете использовать оба для сравнения между производительностью.
Клавиши настройки считывают значения из файла .env , в котором все переменные среды экспортируются. Но вы заметите пример файла env , а не файл .env . Обязательно скопируйте файл env на .env и измените/изменяйте фактические переменные с помощью ваших реальных значений.
Файлы .env не обязуются GIT, поскольку они упоминаются в файле .gitignore , чтобы предотвратить любую утечку конфиденциальных данных.
После запуска команд настройки вам будет представлено несколько безопасных ключей. Скопируйте их в файлы конфигурации, прежде чем продолжить.
ПРИМЕЧАНИЕ. Это однократная настройка. ПРИМЕЧАНИЕ. Проверьте сценарии настройки внутри scripts/ каталога, чтобы понять, какие переменные среды, зашифрованные ключи, зашифрованные ключи. ПРИМЕЧАНИЕ: не забудьте скопировать безопасные ключи на ваш .travis.yml или Jenkinsfile
ПРИМЕЧАНИЕ. Если вы не хотите выполнять копию файла env в .env и изменить значения переменных в .env с помощью ваших реальных значений, вы можете просто отредактировать сценарий travis-setup.sh или jenknis-setup.sh и обновить значения их напрямую. Сценарии находятся в каталоге scripts/ уровня проекта.
Важно: вы должны запустить сценарий travis-setup.sh или сценарий jenkins-setup.sh в локальной машине перед развертыванием на удаленном сервере.
Эти шаги будут шифровать переменные среды, чтобы обеспечить ваши конфиденциальные данные, такие как клавиши API, ключи на основе Docker, развертывание определенных ключей.
$ Make Travis-Setup
Эти шаги будут шифровать переменные среды, чтобы обеспечить ваши конфиденциальные данные, такие как клавиши API, ключи на основе Docker, развертывание определенных ключей.
$ Make Jenkins-Setup
Есть два типа использования. Один использует Rabbitchat в качестве бинарного путем установки от PIP и напрямую запускаю приложение в локальной машине. Другим методом является запуск приложения от Docker. Отсюда еще один набор шагов использования для варианта использования Docker.
После установки вышеуказанных зависимостей и запустить необязательный (если не использование какого -либо CI -сервера) или требуемый (если использование какого -либо CI -сервера) настройка CI , тогда просто запустите следующие команды, чтобы использовать его:
Вы можете запустить и проверить приложение в вашей локальной машине разработки, или вы можете запускать и тестировать непосредственно в удаленной машине. Вы также можете запустить и проверить в производственной среде.
Приведенные ниже команды начнут все это в среде разработки. Чтобы начать в производственной среде, суффикс -prod для каждой команды Make .
Например, если обычная команда make start , то для производственной среды используйте make start-prod . Сделайте это изменение в каждой команде, которую вы хотите запустить в производственной среде.
Исключения: вы не можете использовать приведенный выше метод для тестовых команд, тестовые команды одинаковы для каждой среды. Кроме того, команда make system-prune является автономной без специфических различий в производстве (остается одинаковым во всех средах).
Начальная приложения
$ сделать чистым $ сделать сборку $ make Start # ИЛИ $ docker -compose -d
Остановить заявление
$ сделать остановку # ИЛИ $ Docker-Compose Stop
Удалить и очистить нанесение
$ сделать чистым # ИЛИ $ docker -compose rm -force -v $ echo "y" | Docker System Trune
Чистая система
$ Make System-Prune # ИЛИ $ echo "y" | Docker System Trune
Чтобы проверить все журналы приложения
$ сделать чеки-логики # ИЛИ $ docker-compose logs-follow--tail = 10
Чтобы проверить только журналы приложения Python
$ make check-logs-app # ИЛИ $ docker-compose logs-follow--tail = 10 Identidock
После установки Rabbitchat через PIP просто запустите следующие команды, чтобы использовать его:
Rabbitmq Server
1. Для пользователей Mac
# Начать нормально $ rabbitmq-server # Если вы хотите запустить в фоновом режиме $ rabbitmq-server-Detached # Начните использовать Brew rervices (не работает с TMUX) $ Brew Services Rabbitmq Start
2. Для пользователей Ubuntu/LInux
# Начать нормально $ rabbitmq-server # Если вы хотите запустить в фоновом режиме $ rabbitmq-server-Detached # Начать использовать службу $ service rabbitmq-server Start # Чтобы прекратить использование сервиса $ service rabbitmq-server Stop # Для перезапуска с помощью службы $ service rabbitmq-server перезапуск # Проверить статус $ service rabbitmq-server
Начните сервер Rabbitchat
$ rabbitchat [варианты]
Параметры
| -порт: | Номер порта, где начнется сервер чата |
|---|
Пример
$ rabbitchat -порт = 9191
Остановите сервер Rabbitchat
Нажмите Ctrl+C , чтобы остановить сервер.
Примечание. Тестирование проводится только с помощью метода Docker. В любом случае, не должно иметь значения, запускаете ли вы свое приложение, используя метод Docker или автономный метод. Тестирование не зависит от этого.
Теперь тестирование является основной сделкой проекта. Вы можете протестировать во многих отношениях, а именно, используя команды make , как упомянуто в приведенных ниже командах, которые автоматизируют все, и вам не нужно ничего знать, например, как используется библиотека или структуру тестирования, как проводятся тесты, или через контейнеры docker , или могут быть разными виртуальными средами, использующими tox . Ничего не требуется, чтобы быть известным.
С другой стороны, если вы хотите точно управлять тестами, то вы можете запустить их напрямую, либо с помощью команд pytest , либо через команды tox для запуска их в различных средах Python, либо с помощью команд docker-compose для запуска тестирования различных.
Но запуск команд Make - это Lawasy The Go To Strategy и рекомендованный подход для этого проекта.
Примечание. Tox можно использовать напрямую, где контейнеры docker не будут использоваться. Хотя мы можем попытаться запустить tox внутри наших тестовых контактов, которые мы используем для запуска тестов, используя команды make , но затем нам пришлось бы изменить Dockerfile и установить все зависимости python , такие как python2.7 , python3.x , а затем запустить команды tox из контейнеров docker , которые затем запускают команды pytest , которые мы работаем, чтобы выполнить наши тесты внутри текущих контейнеров.
Предостережение: единственное предостережение в использовании команд Make напрямую и не использование tox - это то, что мы тестируем проект только в одной среде python , Nameley python 3.6 .
Чтобы проверить все
$ сделать тест
Любой другой метод без использования Make будет включать в себя написание много команд. Так что используйте команду MAKE предпочтительно
Чтобы выполнить модульные тесты
$ сделать тест-единицу
Для выполнения компонентных тестов
$ сделать тестовый компонент
Для выполнения контрактных тестов
$ сделать тестовый контракт
Для выполнения интеграционных тестов
$ сделать тест-интеграцией
Для выполнения конечного до конца (E2E) или системы или пользовательского интерфейса или функциональных тестов
$ make test-e2e # ИЛИ $ сделать тестовую систему # ИЛИ $ сделать тест-u-acceptance # ИЛИ $ сделать тестовый функциональный