Skip to content

Instantly share code, notes, and snippets.

@daemotron
Last active May 28, 2017 15:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save daemotron/ec2b58011fa2f008178a1e2c5a331cd5 to your computer and use it in GitHub Desktop.
Save daemotron/ec2b58011fa2f008178a1e2c5a331cd5 to your computer and use it in GitHub Desktop.
POC ZeroRPC server
# -*- coding: utf-8 -*-
import logging
import platform
import signal
import gevent
import zerorpc
Server = None
class Api(object):
@staticmethod
def version():
return platform.python_version()
def handle_sigint(signal, frame):
global Server
logger = logging.getLogger()
logger.warn('received SIGINT, shutting down')
try:
Server.close()
except:
logger.warn('server misbehaving badly')
def init():
gevent.signal(signal.SIGINT, handle_sigint)
def main():
init()
global Server
Server = zerorpc.Server(Api)
Server.bind('tcp://127.0.0.1:4242')
logger = logging.getLogger()
logger.warn('starting server')
Server.run()
if __name__ == '__main__':
main()
@daemotron
Copy link
Author

daemotron commented May 28, 2017

changed init() code to use gevent.signal() instead of signal.signal() to avoid an exception being raised (cf 0rpc/zerorpc-python#164)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment