我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python使用RPC例子

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python使用RPC例子

主要内容

所谓RPC,是远程过程调用(Remote Procedure Call)的简写,网上解释很多,简单来说,就是在当前进程调用其他进程的函数时,体验就像是调用本地写的函数一般。

本文实现的是在本地调用远端的类class对象的接口,也就是本地的client不实例化类对象,调用的是server端的类对象接口。

为了达到让调用层无须关心底层实现,拥有丝滑般的体验,就需要以下几个部分:

  • 客户端需要把类的接口提取出来,并将调用函数事件捕获存储起来;服务端需要把类的公有函数作为可远程调用的接口。
  • 客户端把调用函数的事件(调用的函数,参数)进行序列化并发送给服务端;服务端将客户端的调用事件反序列化,并执行相应的接口,将返回值发送给客户端。
  • 客户端与服务端通过某种方式(一般就是网络socket)进行通信。

远程过程调用RPC常用与分布式计算,对应Python库名为rpyc;

from multiprocessing import Pool
from rpyc import Service  
from rpyc.utils.server import ThreadedServer  
  
class RemoteService(Service):  
 
    def on_connect(self, conn):
        print(conn)
 
    '''供客户端调用的方法前得加exposed_'''
    def exposed_search(self, data):  
        print(data)
        data['result'] = 'ok'
        return data  
 
def main(port):
    sr = ThreadedServer(service=RemoteService, hostname='127.0.0.1', port=port, auto_register=False)  
    print(f'Server IP: {(sr.host,sr.port)}')
    sr.start()  
 
if __name__ == '__main__':
    pool = Pool(processes=2)
    pool.apply_async(main, args=(9998,))
    pool.apply_async(main, kwds={'port':9999})
    pool.close()
    pool.join()

上段为rpyc服务端,下段为rpyc调用端;

import rpyc
import time
from multiprocessing import Pool
 
def search_db(query,port):
    conn = rpyc.connect('localhost',port)
    '''调用时省略exposed_'''
    result = conn.root.search(query)
    time.sleep(1)
    print(result)
    conn.close()
 
if __name__ == '__main__':
    pool = Pool(processes=2)
    pool.apply_async(search_db, args=({"match": {'name': 'user'}}, 9998))
    pool.apply_async(search_db, kwds={'query': {"match": {'name': 'user'}},'port':9999})
    pool.close()
    pool.join()

到此这篇关于Python使用RPC例子的文章就介绍到这了,更多相关Python使用RPC内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python使用RPC例子

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python如何使用RPC

本篇内容介绍了“Python如何使用RPC”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!主要内容所谓RPC,是远程过程调用(Remote P
2023-07-02

在Python使用yaml的几个例子

python版本:2.7.5安装方法:pip install PyYaml“把变量写进yaml做配置文件,然后python脚本从yaml文件里面取到变量”的方法最近是在python编程里比较流行的配置项方法。yaml更加易读,而且通过缩进表
2023-01-31

python argparse例子

arg_1#!/usr/bin/python#coding=utf-8import argparsedef parse_args():    description = "usage: % prog[options]"    parser 
2023-01-31

SpringBoot中使用RabbitMQ的RPC功能案例分析

这篇文章主要讲解了“SpringBoot中使用RabbitMQ的RPC功能案例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot中使用RabbitMQ的RPC功能案例分析
2023-06-25

Node.js高级编程使用RPC通信示例详解

这篇文章主要为大家介绍了Node.js高级编程使用RPC通信示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-01-12

Android之Gallery使用例子

刚刚学习Android,用Gallery作了一个小demo,用来记录一下。package com.example.galleryex02; import android.app.Activity; import android.conten
2022-06-06

Python实用例子有哪些

这篇文章主要讲解了“Python实用例子有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python实用例子有哪些”吧!一、基本操作1 链式比较i=3print(1
2023-06-02

python怎么使用SimpleXMLRPCServer实现简单的rpc过程

这篇文章主要介绍了python怎么使用SimpleXMLRPCServer实现简单的rpc过程的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python怎么使用SimpleXMLRPCServer实现简单的rp
2023-07-02

Android之listfragment的使用例子

1、fragment简介 我对fragment的理解是基于activity的,对于大多数的基本开始发时,我们最先遇到的就是用activity来开发。 简单的例子,新建一个最基本的Android空白界面,我们得到的是一个可以显示一个空白界面的
2022-06-06

Python练手例子(7)

37、对10个数进行排序。程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。#python 3.7if __name__ == '__main__':
2023-01-30

Python练手例子(8)

43、模仿静态变量(static)另一案例。程序分析:演示一个python作用域使用方法。#python3.7class Num: nNum = 1 def inc(self): self.nNum += 1
2023-01-30

Python练手例子(15)

85、输入一个奇数,然后判断最少几个 9 除于该数的结果为整数。程序分析:999999 / 13 = 76923。#!/usr/bin/python#coding=utf-8if __name__ == '__main__': zi
2023-01-30

如何使用RabbitMQ实现RPC

这篇文章给大家分享的是有关如何使用RabbitMQ实现RPC的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。背景知识RabbitMQRabbitMQ 是基于 AMQP 协议实现的一个消息队列(Message Que
2023-06-02

Python练手例子(4)

16、一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。程序分析:请参照程序Python 100例中的第14个例子#python3.7from sys import stdoutfor
2023-01-30

Python练手例子(1)

1、有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。#本人的运行环境为python3.7count = 0f
2023-01-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录