Last active
May 28, 2017 15:52
-
-
Save daemotron/ec2b58011fa2f008178a1e2c5a331cd5 to your computer and use it in GitHub Desktop.
POC ZeroRPC server
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- 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() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
changed
init()
code to usegevent.signal()
instead ofsignal.signal()
to avoid an exception being raised (cf 0rpc/zerorpc-python#164)