返回顶部
首页 > 资讯 > 后端开发 > Python >Python使用RPC例子
  • 277
分享到

Python使用RPC例子

2024-04-02 19:04:59 277人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录主要内容远程过程调用rpc常用与分布式计算,对应python库名为rpyc;上段为rpyc服务端,下段为rpyc调用端;主要内容 所谓RPC,是远程过程调用(Remote Pro

主要内容

所谓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内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python使用RPC例子

本文链接: https://lsjlt.com/news/118677.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python使用RPC例子
    目录主要内容远程过程调用RPC常用与分布式计算,对应Python库名为rpyc;上段为rpyc服务端,下段为rpyc调用端;主要内容 所谓RPC,是远程过程调用(Remote Pro...
    99+
    2024-04-02
  • Python如何使用RPC
    本篇内容介绍了“Python如何使用RPC”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!主要内容所谓RPC,是远程过程调用(Remote P...
    99+
    2023-07-02
  • Python中tqdm的使用和例子
    目录1. tqdm的介绍1.1 tqdm导入2. tqdm.tqdm()对可迭代对象进行封装2.1 语法2.2 例子2.3 带有参数的tqdm.tqdm()2.3.1 例子12.3....
    99+
    2024-04-02
  • 在Python使用yaml的几个例子
    python版本:2.7.5安装方法:pip install PyYaml“把变量写进yaml做配置文件,然后python脚本从yaml文件里面取到变量”的方法最近是在python编程里比较流行的配置项方法。yaml更加易读,而且通过缩进表...
    99+
    2023-01-31
    几个 例子 Python
  • python argparse例子
    arg_1#!/usr/bin/python #coding=utf-8 import argparse def parse_args():     description = "usage: % prog[options]"     pa...
    99+
    2023-01-31
    例子 python argparse
  • SpringBoot中使用RabbitMQ的RPC功能案例分析
    这篇文章主要讲解了“SpringBoot中使用RabbitMQ的RPC功能案例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot中使用RabbitMQ的RPC功能案例分析...
    99+
    2023-06-25
  • python使用SimpleXMLRPCServer实现简单的rpc过程
    目录使用SimpleXMLRPCServer实现rpc模块定义方法python与rpc服务1.什么是RPC2.xmlrp库使用SimpleXMLRPCServer实现rpc 模块 S...
    99+
    2024-04-02
  • Android之Gallery使用例子
    刚刚学习Android,用Gallery作了一个小demo,用来记录一下。 package com.example.galleryex02; import android.a...
    99+
    2022-06-06
    gallery Android
  • Node.js高级编程使用RPC通信示例详解
    目录前言Node.js 朴素 RPCThrift RPC Demo补充内容关于 TCP “粘包”问题说明前言 在构建微服务时,为了追求极致的效率,服务间一般...
    99+
    2023-01-12
    Node.js高级编程RPC通信 Node RPC
  • Python实用例子有哪些
    这篇文章主要讲解了“Python实用例子有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python实用例子有哪些”吧!一、基本操作1 链式比较i=3print(1<i<3)...
    99+
    2023-06-02
  • Android之listfragment的使用例子
    1、fragment简介 我对fragment的理解是基于activity的,对于大多数的基本开始发时,我们最先遇到的就是用activity来开发。 简单的例子,新建一个最...
    99+
    2022-06-06
    Android
  • Python浅析多态与鸭子类型使用实例
    什么多态:同一事物有多种形态 为何要有多态=》多态会带来什么样的特性,多态性 多态性指的是可以在不考虑对象具体类型的情况下而直接使用对象多态指的是一类事物有多种形态,比如动物有多种形...
    99+
    2024-04-02
  • 用python实现五子棋实例
    本文实例为大家分享了用python实现五子棋的具体代码,供大家参考,具体内容如下 # 制作一个棋盘 """ ++++++++++ ++++++++++ ++++++++++ ++++...
    99+
    2024-04-02
  • 如何使用RabbitMQ实现RPC
    这篇文章给大家分享的是有关如何使用RabbitMQ实现RPC的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。背景知识RabbitMQRabbitMQ 是基于 AMQP 协议实现的一个消息队列(Message Que...
    99+
    2023-06-02
  • python怎么使用SimpleXMLRPCServer实现简单的rpc过程
    这篇文章主要介绍了python怎么使用SimpleXMLRPCServer实现简单的rpc过程的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python怎么使用SimpleXMLRPCServer实现简单的rp...
    99+
    2023-07-02
  • Python练手例子(7)
    37、对10个数进行排序。 程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。 #python 3.7 if __name__ == '__main_...
    99+
    2023-01-30
    例子 Python
  • Python练手例子(8)
    43、模仿静态变量(static)另一案例。 程序分析:演示一个python作用域使用方法。 #python3.7 class Num: nNum = 1 def inc(self): self.nNu...
    99+
    2023-01-30
    例子 Python
  • Python练手例子(10)
    55、学习使用按位取反~。 程序分析:~0=1; ~1=0; (1)先使a右移4位。 (2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4) (3)将上面二者进行&运算。 #python3.7 if __...
    99+
    2023-01-30
    例子 Python
  • Python练手例子(12)
    67、输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 #python3.7 def inp(numbers): for i in range(6): numbers.append(int...
    99+
    2023-01-30
    例子 Python
  • Python练手例子(13)
    73、反向输出一个链表。 #python3.7 if __name__ == '__main__': ptr = [] for i in range(5): num = int(input('Pleas...
    99+
    2023-01-30
    例子 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作