没有项目描述

aioerl的Python项目详细描述


全部

PyPI version

aioerl是一个python库,它用异步任务模拟erlang进程的原理。

实现以下想法:

  • 每个进程都有一个邮箱:从其他进程接收消息的队列。
  • 消息传递:进程完全与消息通信(从开发人员的角度来看)
  • 1,进程可以监视其他进程(当进程死亡或崩溃时,以退出原因或异常向其主管发送消息)<

为什么?

asyncio非常棒,内置的结构如asyncio.Queue对于任务之间的通信非常有用,但是很难管理错误。

使用aioerl,进程只需等待来自其他进程的传入消息,并决定如何处理每个事件(请参见example)。

快速启动

要求:python 3.7+

安装:

pip install aioerl

示例

fromaioerlimportspawn_monitored,receive,reply,send,runasyncdefping_pong():whileTrue:m=awaitreceive(timeout=10)ifm.is_ok:ifm.body=="ping":awaitreply("pong")else:raiseException("Invalid message body")elifm.is_timeout:return# terminate processasyncdefmain():p=awaitspawn_monitored(ping_pong())awaitsend(p,"ping")print(awaitreceive())# Message(sender=<ErlProc:2>, event='ok', body='pong')awaitsend(p,"pang")print(awaitreceive())# Message(sender=<ErlProc:2>, event='err', body=Exception("Invalid message body"))awaitsend(p,"ping")print(awaitreceive())# Message(sender=<ErlProc:2>, event='exit', body='noproc')if__name__=="__main__":run(main())

待办事项:

很多事情!

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

推荐PyPI第三方库


热门话题
java如何在Spring Boot 2.2.0中添加弹性搜索?   jakarta ee如何在没有java认证的情况下停止直接访问网页(自定义标记)   java Hibernate:使用executeUpdate()的批删除未清除一级缓存   java如何在Hibernate中插入外键定义为Long的实体?   带参数的java Mockito单元测试计算器方法   java如何从Rally Rest API读取集合属性   java如何对基于消息的处理执行集成测试?   带插入排序的java排序字符串数组标记,双链表   java为什么在基于注释的Spring app@Value默认值中解析为null?   java Apache Commons Http客户端注册特定于客户端的协议   如何使用java反转字符串中n个部分的n个字符   java Tomcat在本地主机上运行良好,但在部署时出现内部服务器错误   使用信号量的变量的java结果   Java编译/运行时类路径问题   java哪个提供商负责AES/CTR/NOP添加?   伪错误解码器中的java响应未获取Zalando问题自定义属性