使用websockets和redis的实时消息服务器。

cobras的Python项目详细描述


一般

PyPI versionBuild StatusPyPI Python VersionsLicenseWheelcodecov

cobra是一个使用python3、websockets和redis流的实时消息服务器。它在RedisConf 2019期间被详细介绍。从那时起,我们添加了历史支持,它允许cobra保留发布到一个没有人订阅的频道的消息。这使得通过OOMs炸毁系统并填满硬盘变得更容易,但它使cobra更加有用。

Alt text

眼镜蛇已经在交通繁忙的生产中使用了大约一年。因为它是用python编写的,所以它以一条蛇的名字命名,作为一种伟大编程语言的总称。

客户机可以对cobra服务器执行4个操作:publishsubscribereadwritepublishsubscribe是群聊的两个核心操作。readwrite是键值存储(如memcached)或python语句提供的典型操作。

  • publish:将数据发送到频道,该频道将广播给订阅该频道的任何人
  • subscribe:实时接收发送到频道的事件。
  • write:记录一些数据(通过键寻址)
  • read:检索数据

新闻

眼镜蛇正在积极开发中,查看changelog了解什么是烹饪。

安装

具有pip

pip install cobras

带Docker

docker pull bsergean/cobra

用于开发

git clone <url>
cd cobra
python3 -m venv venv
source venv/bin/activate
make dev
make test

用法

COBRA服务器和测试客户端

$ cobra
Usage: cobra [OPTIONS] COMMAND [ARGS]...

  Cobra is a realtime messaging server using Python3, WebSockets and Redis
  PubSub.

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  admin            Run admin commands.
  health           Health check
  init             Setup cobra
  monitor          Monitor cobra
  publish          Publish to a channel
  run              Run the cobra server
  redis_subscribe  Subscribe to a channel (with redis)
  subscribe        Subscribe to a channel
  secret           Generate secrets used for authentication...

要运行服务器,请使用cobra run。您可以使用cobra health对服务器运行运行状况检查。

cobra health --url 'ws://jeanserge.com/v2?appkey=_health' --secret A5a3BdEfbc6Df5AAFFcadE7F9Dd7F17E --role health

巴瓦德

bavarde是针对公共cobra服务器运行的聊天客户端。打开两个终端,运行下面的两个命令并开始键入。

$ bavarde client
...
$ bavarde client --username bob
...

设置

cobras init需要运行一次才能在~/.cobra.yaml中生成应用程序配置文件。该文件包含所有配置的角色、机密和应用程序。客户端将使用此数据进行身份验证。

要在生产环境中运行,您需要一个redis(version>;5)实例。以下是您可能需要调整的环境变量,用于连接到2个redis实例(用于scalabity),并绑定到0.0.0.0上,以便Internet可以看到您的实例。

- name: COBRA_HOST
  value: 0.0.0.0
- name: COBRA_REDIS_URLS
  value: redis://redis1;redis://redis2

# config can be a path to a file
- name: COBRA_APPS_CONFIG_PATH
  value: /path/to/your/cobra.yaml

# config can be a blob of gziped + base64 data (if you do not want to mount volumes)
# Generate it with:
# `gzip -c ~/.cobra.yaml | base64`
- name: COBRA_APPS_CONFIG_CONTENT
  value: BIGBLOGOFDATA

谢谢

如果没有其他令人惊叹的开源项目和技术,就不会有眼镜蛇。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android:在ListView上使用setOnItemClickListener   使用Netbeans 7.0连接到SQL Server的java正在挂起   java Spring3依赖项注入不适用于mule   java Flink SQL结果字段与LocalDateTime上请求的类型错误不匹配   java找不到文件的结尾   考虑到NamingStrategy,java有没有办法将字符串转换为JsonNode?   使用Netbeans/ant部署java(命令行)应用程序   java如何修复Spring引导多部分上载中的“所需请求部分不存在”   java在应用程序启动时通过引用获取映射未知目标实体属性异常   java形状旋转问题Java2d   Weblogic服务器上的java ExecuteAndWaitInterceptor问题   JavaSpringBoot:project将图像保存在错误的路径中,并且在使用IDEIntellji打开时不显示图像   类向java接口添加方法   Swing组件上的Java 7泛型   sql server如何从java获取用户名。sql。联系   java如何检查该行是否与正则表达式(regex)冲突?   java如何在spring引导安全中为计数失败登录设置验证登录为false   图像如何在Java中使PNG的白色透明?