Hướng dẫn zeromq rpc python - con trăn zeromq rpc
! `Xuất bản` _ ! `Kiểm tra` _ Gói Python này thêm các chức năng gọi quy trình từ xa (RPC) cơ bản vào ZeroMQ. Kiến trúc lệnh/dịch vụ được hỗ trợ cho phép tuần tự hóa phức tạp của Dữ liệu xác định người dùng và triển khai trông hiện đại. PIP Cài đặt pyzmqrpc3 Triển khai một lớp cụ thể của ICMAD lớp giao diện có thể de/serialize chính nó và có một hàm tạo mặc định (tức là có thể được xây dựng mà không có bất kỳ đối số nào): từ việc nhập nhập tùy chọn Từ ICMand nhập ZMQRPC Lớp SimpleCommand (ICMAnd): def __init __ ( self, param1: tùy chọn [str] = none, param2: tùy chọn [str] = none): super().__init__() tự .__ param1 = param1 hoặc ‘ tự .__ param2 = param2 hoặc ‘ @property def param1 (self) -> str: tự trả lại .__ param1 @property def param2 (self) -> str: tự trả lại .__ param2 def set_command_state (tự, trạng thái: dict) -> none: tự .__ param1 = state [‘param1,] tự .__ param2 = state [‘param2,] def get_command_state (self) -> dict: Quay trở lại Dict ( param1=self.param1, param2=self.param2, ) Hai phương thức, đặt*lệnh*state () và nhận*lệnh*state (), là Cần thiết để sắp xếp dữ liệu lệnh giữa máy khách và máy chủ. Trách nhiệm của người dùng là đảm bảo rằng việc thực hiện những điều này Phương pháp là chính xác để tránh mất dữ liệu. Cả máy khách và phía máy chủ đều cần phải nhận thức được tất cả các hệ thống Lệnh triển khai. Thực hiện một chức năng dịch vụ cụ thể kế thừa từ IService và Xử lý một loại lệnh của máy chủ:
Hai phương thức, đặt*lệnh*state () và nhận*lệnh*state (), là Cần thiết để sắp xếp dữ liệu lệnh giữa máy khách và máy chủ. Trách nhiệm của người dùng là đảm bảo rằng việc thực hiện những điều này Phương pháp là chính xác để tránh mất dữ liệu. Cả máy khách và phía máy chủ đều cần phải nhận thức được tất cả các hệ thống Lệnh triển khai. Thực hiện một chức năng dịch vụ cụ thể kế thừa từ IService và
Hai phương thức, đặt*lệnh*state () và nhận*lệnh*state (), là
Hai phương thức, đặt*lệnh*state () và nhận*lệnh*state (), là*actual* command class and an *instance* Cần thiết để sắp xếp dữ liệu lệnh giữa máy khách và máy chủ. Trách nhiệm của người dùng là đảm bảo rằng việc thực hiện những điều này
Phương pháp là chính xác để tránh mất dữ liệu.
Hai phương thức, đặt*lệnh*state () và nhận*lệnh*state (), là
Hai phương thức, đặt*lệnh*state () và nhận*lệnh*state (), là Cần thiết để sắp xếp dữ liệu lệnh giữa máy khách và máy chủ. Trách nhiệm của người dùng là đảm bảo rằng việc thực hiện những điều nàyPhương pháp là chính xác để tránh mất dữ liệu. Cả máy khách và phía máy chủ đều cần phải nhận thức được tất cả các hệ thống Lệnh triển khai. Thực hiện một chức năng dịch vụ cụ thể kế thừa từ IService và Xử lý một loại lệnh của máy chủ: từ ZMQRPC nhập iservice lớp simpleservice (iservice):
SimpleCommand được thực hiện với các params {0} và và {1}. Trả về văn bản phản hồi Simpleservice cho SimpleCommand là % S S S SPR STR ( Mặc dù về mặt kỹ thuật có thể tạo một dịch vụ để xử lý nhiều hơn
nó rất được khuyến khích từ quan điểm kiến trúc để cống hiến Một dịch vụ cho một loại lệnh. Các dịch vụ triển khai không cần phải hiển thị ở phía khách hàng
Về phía máy chủ, hãy tạo máy chủ RPC Zeromq: Từ ZMQRPC Nhập ZMQRPCServer
ZMQ_REP_BIND_ADDRESS = xông TCP: //*: 30000, username/password. Đăng ký tất cả các dịch vụ:
của chức năng dịch vụ. Sau khi đăng ký tất cả các dịch vụ, hãy khởi động máy chủ RPC:Về phía máy khách, tạo một máy khách kết nối với điểm cuối máy chủ đó:Client = ZMQRPCClient ( ZMQ_REQ_ENDPOINTS = [xông TCP: // LocalHost: 30000,], Có các lệnh thực thi máy khách trên máy chủ: Lệnh = SimpleCommand (param1 = xông value1, param2 = giá trị2,), Phiên bản chủ đề, ZMQReceiverthread, có thể được sử dụng để kiểm tra hoặc với Các ứng dụng có thể đang chạy nhiều luồng máy chủ. ## ZMQSenderSau khi tạo, nó bắt đầu một ổ cắm quán rượu và/hoặc tạo ổ cắm lại. Ổ cắm REQ có thể trỏ đến nhiều điểm cuối, sau đó sử dụng vòng tròn gửi tin nhắn. ZMQSender thực hiện phương thức gửi () gửi tin nhắn. ## ZMQProxyChuyển tiếp tin nhắn từ một ổ cắm phụ một cặp người nhận/người gửi. ## ZMQRPCServer/ThreadDịch vụ thực hiện (các) dịch vụ có thể được thực hiện từ xa bằng cách nhận một loại lệnh. Nó kế thừa chức năng ZMQReceiver để nghe các tin nhắn trên Đại diện hoặc ổ cắm phụ. Tuy nhiên, nó ghi đè phương thức xử lý*tin nhắn*đến () để giảm dần Tin nhắn lệnh, xác định loại của họ và thực hiện dịch vụ tương ứng implementation. Phiên bản luồng, ZMQRPCServerThread, có thể được sử dụng để kiểm tra hoặc với Các ứng dụng có thể đang chạy nhiều luồng máy chủ. ## ZMQRPCCLIENTThực hiện một dịch vụ được triển khai từ xa trên một quán rượu hoặc ổ cắm lại bằng cách sử dụng Lệnh đối số. Đối với ổ cắm quán rượu, không có thông điệp phản hồi nào được dự kiến. Nó kế thừa chức năng ZMQSender để gửi tin nhắn qua dây. ## Tôi ra lệnhLớp giao diện cơ sở cho tất cả các loại lệnh cụ thể. Nó thực thi việc thực hiện hai phương pháp; đặt*lệnh*state () và get*command*state(). Hai phương pháp này rất cần thiết trong việc sắp xếp bất kỳ dữ liệu người dùng phức tạp nào từ phía khách hàng về phía máy chủ. ## iserviceLớp giao diện cơ sở cho tất cả các chức năng dịch vụ cụ thể. Nó thực thi việc thực hiện phương thức ** cuộc gọi ** () là mục nhập Điểm xử lý một loại lệnh nhất định ở phía máy chủ. # Proxy tiêu chuẩn có sẵnMột số proxy có sẵn trong hộp:
Mỗi proxy/chủ đề proxy này sẽ nhận được thông báo từ đầu vào Định dạng/ổ cắm và điều chỉnh nó vào ổ cắm đầu ra. Một mô hình có thể là thu thập tất cả các mẫu từ tất cả các quy trình phụ trên một trang web và ghép kênh thông qua proxy một cách đáng tin cậy trên ổ cắm rep/req. Lưu ý rằng khi sử dụng kết nối quán rượu/phụ, không có thông báo trả lại hoặc Trong trường hợp gọi phương pháp, bất kỳ phản ứng chức năng nào cũng bị loại bỏ. Proxy rep/req được đệm lặng lẽ sử dụng một ổ cắm pub/sub để giới thiệu một có nghĩa là để đệm thông điệp và yêu cầu phương pháp. # Các vấn đề và giới hạn đã biết (Kil)
Không chắc chắn nếu Auth hoạt động trên các kết nối từ xa.
# Ghi chúXin lưu ý rằng việc triển khai này rất trước khi trưởng thành, mặc dù nó hoạt động Tốt cho các dự án hiện đang được sử dụng và đã hoạt động ổn định trong nhiều tháng. Để biết thêm thông tin, hãy truy cập kho lưu trữ dự án tại https://github.com/brgirgis/pyzmqrpc3 |