%global _empty_manifest_terminate_build 0 Name: python-zmqflp Version: 0.8.3 Release: 1 Summary: PyZMQ server/client implementing asyncio freelance protocol based on Min RK's starter code License: Mozilla Public License 2.0 (MPL 2.0) URL: https://github.com/curtywang/zmqflp Source0: https://mirrors.aliyun.com/pypi/web/packages/8d/f4/d165176c39462b266946d143cdc922387d01cc316c9f69dd914690e3a5a9/zmqflp-0.8.3.tar.gz BuildArch: noarch Requires: python3-pyzmq Requires: python3-cbor2 %description # zmqflp Improvements to the Freelance protocol-based zeromq server/client (Python) The client and server talk using cbor2, so the api accepts dictionaries as input. ## To create a zmqflp server: ```python # create the server object (it runs in an asyncio zmq context) self.server = zmqflp_server.ZMQFLPServer(self.config.identity, self.config.zmq_port) # use the following code to process messages received by the server and send them back async def process_messages(self): (serialized_request, orig_headers) = await self.server.receive() if serialized_request == 'EXIT': await self.server.send(orig_headers, 'exiting') return False elif serialized_request != "PING": try: request = serialized_request response = self.process_request(request) await self.server.send(orig_headers, response) return True except Exception as e: logging.exception(e) return False return True ``` ## To create a client without using a context manager: ```python # create the client object (this does NOT run in an asyncio context) self.client = zmqflp_client.ZMQFLPClient(self.config.list_of_servers) # to send and receive with the client msg_to_send = {'message': 'hello!', 'other-key': 'stuff goes here'} status = self.client.send_and_receive(msg_to_send) ``` ## To create a client using a context manager (for example, to run on AWS Lambda): ```python # create the client object (this does NOT run in an asyncio context) with zmqflp_client.ZMQFLPClient(self.config.list_of_servers) as client: # to send and receive with the client msg_to_send = {'message': 'hello!', 'other-key': 'stuff goes here'} status = client.send_and_receive(msg_to_send) ``` %package -n python3-zmqflp Summary: PyZMQ server/client implementing asyncio freelance protocol based on Min RK's starter code Provides: python-zmqflp BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-zmqflp # zmqflp Improvements to the Freelance protocol-based zeromq server/client (Python) The client and server talk using cbor2, so the api accepts dictionaries as input. ## To create a zmqflp server: ```python # create the server object (it runs in an asyncio zmq context) self.server = zmqflp_server.ZMQFLPServer(self.config.identity, self.config.zmq_port) # use the following code to process messages received by the server and send them back async def process_messages(self): (serialized_request, orig_headers) = await self.server.receive() if serialized_request == 'EXIT': await self.server.send(orig_headers, 'exiting') return False elif serialized_request != "PING": try: request = serialized_request response = self.process_request(request) await self.server.send(orig_headers, response) return True except Exception as e: logging.exception(e) return False return True ``` ## To create a client without using a context manager: ```python # create the client object (this does NOT run in an asyncio context) self.client = zmqflp_client.ZMQFLPClient(self.config.list_of_servers) # to send and receive with the client msg_to_send = {'message': 'hello!', 'other-key': 'stuff goes here'} status = self.client.send_and_receive(msg_to_send) ``` ## To create a client using a context manager (for example, to run on AWS Lambda): ```python # create the client object (this does NOT run in an asyncio context) with zmqflp_client.ZMQFLPClient(self.config.list_of_servers) as client: # to send and receive with the client msg_to_send = {'message': 'hello!', 'other-key': 'stuff goes here'} status = client.send_and_receive(msg_to_send) ``` %package help Summary: Development documents and examples for zmqflp Provides: python3-zmqflp-doc %description help # zmqflp Improvements to the Freelance protocol-based zeromq server/client (Python) The client and server talk using cbor2, so the api accepts dictionaries as input. ## To create a zmqflp server: ```python # create the server object (it runs in an asyncio zmq context) self.server = zmqflp_server.ZMQFLPServer(self.config.identity, self.config.zmq_port) # use the following code to process messages received by the server and send them back async def process_messages(self): (serialized_request, orig_headers) = await self.server.receive() if serialized_request == 'EXIT': await self.server.send(orig_headers, 'exiting') return False elif serialized_request != "PING": try: request = serialized_request response = self.process_request(request) await self.server.send(orig_headers, response) return True except Exception as e: logging.exception(e) return False return True ``` ## To create a client without using a context manager: ```python # create the client object (this does NOT run in an asyncio context) self.client = zmqflp_client.ZMQFLPClient(self.config.list_of_servers) # to send and receive with the client msg_to_send = {'message': 'hello!', 'other-key': 'stuff goes here'} status = self.client.send_and_receive(msg_to_send) ``` ## To create a client using a context manager (for example, to run on AWS Lambda): ```python # create the client object (this does NOT run in an asyncio context) with zmqflp_client.ZMQFLPClient(self.config.list_of_servers) as client: # to send and receive with the client msg_to_send = {'message': 'hello!', 'other-key': 'stuff goes here'} status = client.send_and_receive(msg_to_send) ``` %prep %autosetup -n zmqflp-0.8.3 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-zmqflp -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Jun 20 2023 Python_Bot - 0.8.3-1 - Package Spec generated