高级订户发布服务器套接字通信

hein的Python项目详细描述


…海因图片::http://img.shields.io/badge/license-gplv3-blue.svg?style=flat

:target:https://github.com/ceyzeriat/hein/blob/master/license

:name:hein
:website:https://github.com/ceyzeriat/hein
:author:guillaume schworer
:version:0.2

hein:高级订户发布者套接字通信。完全兼容的python2和3。

自己的个人答案(如网页)。在这种特殊情况下,服务器是被动的:它所做的唯一事情是在1对1通信中应答客户机。
如果没有客户机,服务器什么也不做。如果没有服务器,客户端将返回一个错误。

如果某些侦听器已启动、尚未启动或已丢弃。

这是一个典型的情况,即需要一个唯一的客户端与多个侦听服务器对话…服务器自己向广播客户端的"连接步骤"…即使没有服务器在监听,客户端也在广播其消息。

交钥匙-检查下面的示例。

nb:``pydispatcher`````dispatch`````pypubsub```````smokesignal``或其他类似的库将使您达到多个线程可以相互通信的程度—这对于某些应用程序来说非常好,但是线程不是进程,您需要在订阅服务器之间共享发布服务器对象:当订阅服务器在不同的进程(可能在不同的计算机上)中运行时,这不是一个选项。`` zeromq``将使您能够在进程之间进行对话。但是,所有的异步繁重的后勤工作都留给您去实现,当订户断开时,套接字连接将崩溃(除非您在自己的实现中也介绍了这种情况)。这两个调整都包含在"hein"中:最小的努力。此外,hein不需要运行deamon。



example
===


直截了当地说:启动3个终端,您应该在其中启动一个交互式python解释器(而不是ide)。


在第一个终端(侦听器1)中,键入:

。代码块:python

代码块:python

代码块:python

现在输入发送器终端:

…代码块::python

t.tell_raw('hello!')

,您将看到消息出现在两个侦听终端中。


现在关闭一个侦听器并键入:

。代码块::python



仅列出一个带有true(is connected)标志的侦听器。现在让我们尝试另一种保持输入类型的方法:

…代码块::python从datetime导入datetime你好,'integer':34,'float':13.4,'d':日期时间(2017,12,3,tzinfo=pytz.utc)})


接收器将得到完全相同的结果:

……代码块::python

{integer':34,'float':13.4,'string':'hello','d':datetime.datetime(2017,12,3,0,0,tzinfo=<;utc>;)}



默认情况下,它只打印侦听器的名称或发送的消息。
您现在需要编写自己的函数来替换这些默认回调。
就这样。

请注意,正如您在运行示例/摘要时可能看到的那样,通信本身是非阻塞的和异步的:不需要自己完成ennoying线程工作,` hein'library是一个交钥匙解决方案(与zeromq不同)。

hein使用的最佳典型例子是让多个应用程序相互对话:它们都忙于做自己的事情,但在发送消息时仍能从对方那里获得消息(即异步,而不是在发送消息时)。不再忙于处理它们)。

http://pythonhosted.org/hein/hein.html




*线程,选择:对于线程和端口读取
*json:对于解包消息
*time,os,re:对于基本内容
*byt:对于相同的字节链,无论python版本如何
*pytz:可选,对于处理日期时区



installation
=setup.py install

将自动安装对byt的依赖。请参阅"要求"一节。如果您有一个标准的python安装(或任何更高级的发行版,如anaconda),那么您应该很乐意去。


contribution
=


只要在github上发送一个请求,我们就可以讨论它。在"问题跟踪程序"中,您可以找到挂起的任务。

错误报告
----


如果您认为找到了问题跟踪程序,请参阅github上的"问题跟踪程序"。

_`问题跟踪器`:https://github.com/ceyzeriat/hein/issues


其他选项
----


您可以向我发送电子邮件,也可以将其添加到github上的问题/愿望列表中。

引用
==


如果您在项目中使用hein,请给我一行<;mailto:{my first name}.{my family name}@gmail.com>;`,您将更早得到修复和其他选项。


许可证
==


hein是在gnu通用公共许可证v3或更高版本(gplv3+)下发布的。请参阅许可证文件。



changelog
——


0.2.3(2018-04-27)
+++++++++++++特别是json.loads拒绝字节



0.2.0(2018-04-26)
++++++++++++传输的
-tell-json方法自动保存传递的值的类型
-tell-json方法接受可选的解包(bool,默认为true)参数,允许在接收时不自动解压缩消息



0.1.13(2017-12-17)
++++++++++++br/>
-added tell-json和tell-json-ext可以传递任何数据结构,并保留类型信息。
-tell-json是一种方便的方法使用序列化程序的纯json实现的方法,这意味着python3将无法序列化字节。
-tell_json_ext是python 2和3之间交叉一致的自定义序列化程序,并将正确处理字节和日期时间对象。
-修复自述文件



0.1.9(2017-11-12)
+++++++++++date time.date、datetime.time、str、unicode(pyt2)和bytes(pyt3))
-修改"tell"方法以接受unicode字符。python3内置的'str'和pyhton2内置的'unicode'编码为"utf-8",python2内置的'str'和python2/3'字节'编码为"ascii"(即"拉丁-1")。




0.1.8(2017-10-28)
++++++++++++两个同名socreceiver


0.1.7(2017-04-04)
+++++++++(2017-04-03)
++++++++++++++无障碍


0.1.1(2017-03-09)
++++++++++++更快的通信融合



0.1.0(2017-03-05)
++++++++++++

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

推荐PyPI第三方库


热门话题
java关闭应用程序按钮Listener   Java中的多线程同步在Java示例中的思考   java如何查看Tomcat正在使用/访问的JAR?   java My代码在调用垃圾收集器后不会终止   多线程Java连接线程池和connectionfactory?   java在运行时修改JAR文件   java Android:使用光标时引发IllegaleException   在Netbeans中测试不可执行库的java?   泛型在参数上强制子类Java类型   spring Java:继承与依赖注入“自动连线”   javascript如何解析这个xml元素   java打印特定序列中的数组   带有ProcessingTimeSessionWindow的java Apache Flink自定义触发器   java如何配置消息驱动的Bean应用程序和Glassfish来使用来自远程MessageBroker的消息?