一个模仿Erlang进程哲学的asyncio任务Python库
项目描述
aioerl
aioerl
是一个Python库,模仿了Erlang进程的哲学,使用asyncio任务。
实现以下思想
- 每个进程都有一个邮箱:一个队列,用于接收来自其他进程的消息。
- 消息传递:进程完全通过消息进行通信(从开发者的角度来看)
- 监督器/监视器:进程可以监视其他进程(当一个进程死亡或崩溃时,将退出原因或异常的消息发送给其监督器)
为什么?
asyncio
很棒,并且内置结构如asyncio.Queue
非常适合在任务之间进行通信,但管理错误很困难。
使用aioerl
,进程只需等待来自其他进程的传入消息,并决定对每个事件进行什么操作(见示例)。
快速入门
要求:Python 3.7+
安装
pip install aioerl
示例
from aioerl import receive
from aioerl import reply
from aioerl import send
from aioerl import spawn
import asyncio
async def ping_pong():
while m := await receive(timeout=10):
if m.is_ok:
if m.body == "ping":
await reply("pong")
else:
raise Exception("Invalid message body")
elif m.is_timeout:
return # terminate process
async def main():
p = await spawn(ping_pong())
await send(p, "ping")
print(await receive()) # Message(sender=<Proc:Task-2>, event='ok', body='pong')
await send(p, "pang")
print(await receive()) # Message(sender=<Proc:Task-2>, event='err', body=Exception('Invalid message body'))
await send(p, "ping")
print(await receive()) # Message(sender=<Proc:Task-2>, event='exit', body='noproc')
if __name__ == "__main__":
asyncio.run(main())
待办事项
很多事!
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
aioerl-0.0.20200813.tar.gz (17.1 kB 查看哈希值)
构建版本
aioerl-0.0.20200813-py3-none-any.whl (17.8 kB 查看哈希值)
关闭
aioerl-0.0.20200813.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b25fd8825385aaf9e264897658b0a8c73503c93ac931b3ee751d0fc471a9a1f1 |
|
MD5 | 7d924970f1fb093e81627da914fdd7f9 |
|
BLAKE2b-256 | 304e4c6b60d62e825057b0ff3707a80a4b1c74532343f7a6ede45e99e3168780 |
关闭
aioerl-0.0.20200813-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | da6649f6343b84773ec13975c2463220c4c695fb04f1074bf374096a6ed0a383 |
|
MD5 | d15680dbf6d4a62e88803446d46b5a4a |
|
BLAKE2b-256 | 5edf17a4e5cb8bc76f3e7cd3cc5a6abeff1803c70ce49fccf8b0bba30596e7ef |