File: server_multiplexed.py

package info (click to toggle)
pyro5 5.15-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 2,112 kB
  • sloc: python: 14,291; makefile: 163; sh: 66; javascript: 62
file content (57 lines) | stat: -rw-r--r-- 1,585 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import socket
import time
import Pyro5.socketutil
import Pyro5.api


Pyro5.config.SERVERTYPE = "multiplex"
Pyro5.config.POLLTIMEOUT = 3


hostname = socket.gethostname()
my_ip = Pyro5.socketutil.get_ip_address(None, workaround127=True)


@Pyro5.api.expose
class EmbeddedServer(object):
    def multiply(self, x, y):
        return x * y


print("MULTIPLEXED server type. Initializing services...")
print("Make sure that you don't have a name server running already!\n")
# start a name server with broadcast server
nameserverUri, nameserverDaemon, broadcastServer = Pyro5.nameserver.start_ns(host=my_ip)
assert broadcastServer is not None, "expect a broadcast server to be created"
print("got a Nameserver, uri=%s" % nameserverUri)

# create a Pyro daemon
pyrodaemon = Pyro5.api.Daemon(host=hostname)
serveruri = pyrodaemon.register(EmbeddedServer())
print("server uri=%s" % serveruri)

# register it with the embedded nameserver
nameserverDaemon.nameserver.register("example.eventloop.server", serveruri)

print("")

# Because this server runs the different daemons using the "multiplex" server type,
# we can use the built in support (since Pyro 4.44) to combine multiple daemon event loops.
# We can then simply run the event loop of the 'master daemon'. It will dispatch correctly.

pyrodaemon.combine(nameserverDaemon)
pyrodaemon.combine(broadcastServer)


def loopcondition():
    print(time.asctime(), "Waiting for requests...")
    return True


pyrodaemon.requestLoop(loopcondition)

# clean up
nameserverDaemon.close()
broadcastServer.close()
pyrodaemon.close()
print("done")