python异步分布式可伸缩队列服务

PyAsynch的Python项目详细描述


pyasynch

pyasynch是一个通过rabbitmq创建分布式python服务的包。

这些服务通过一个公共rabbitmq队列相互通信,并将服务公开为http tornado服务器

如何使用

pip install pyasynch

pip3 install pyasynch

或者复制git repo。

创建自定义节点


from pyasynch.node import Node

class MyNode(Node):

    def mymethod(self,arg1,arg2,**kwargs):
        return {'myproperty':'myvalue'}

    def mysecondmethod(self,myproperty,**kwargs):
        return {}   

创建配置文件(例如myconfig.json)

{
  "endpoint": {
    "amqp": "amqp://guest:guest@127.0.0.1:5672/pyasynch",
    "id": "myendpoint",
    "threaded": false
  }
}

创建路由文件(例如myroutes.json)

{
 "routes": {
    "pyasynch://myendpoint/mynode/mymethod" : ["pyasynch://myendpoint/mynode/mysecondmethod"],
}    

创建main(例如main.py)运行程序并注册节点

# IMPORTS
from pyasynch.environment import Environment

env = Environment()
env.register_node('mynode',MyNode(env.endpoint))

try:
    env.run()
except KeyboardInterrupt:
    env.stop()

一切就绪,现在您可以运行端点服务(检查rabbitmq是否正常运行)

python3 main.py-c myconfig.json-r myroutes.json-p 8081

您可以以可伸缩的方式复制节点和端点逻辑。

然后可以执行json get或post到端点: http://127.0.0.1:8081/mynode/mymethod

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

推荐PyPI第三方库


热门话题
Java例外。Lang.Stringindexoutofboundsexception索引超出范围(0)   java Spring引导Freemarker从2.2.0升级失败   重构Java反模式名称?包含对象的对象包含。。。等   用java处理JDBC可能出现的死锁的最佳方法   java无法访问主线程上的数据库,因为它可能会在很长一段时间内锁定UI   java如何将固定大小的画布包装在边框窗格中的滚动窗格居中?   java解析xsd文件后得到空结果   在html页面中表示XML文件的java   socketjava对象流   sql Java越界异常数据库   JavaJBoss7.1.1不会在Mavericks上启动   Twincat ADS事件驱动读取在一段时间后停止工作(Java)   java MyBatis使用生成的ID插入所有   Mojave上缺少MacOS Java控制面板   JavaGuice:如果多次注入相同的依赖项,是否注入了该依赖项的相同实例?