hello,I've tried ginkgo today and found ginkgoctl stop can't cleanly stop daemonized service wrapped with ServerWrapper,here's the test code:
hello.py
import gevent
from ginkgo import Service, Setting
from ginkgo.async.gevent import ServerWrapper
from gevent.server import StreamServer
from gevent.socket import create_connection
class HelloWorld(Service):
message = Setting("message", default="Hello World",
help="Message to print out while running")
def do_start(self):
self.spawn(self.message_forever)
def message_forever(self):
while True:
print self.message
self.async.sleep(1)
def handle_tcp(socket,address):
print 'new tcp connection!'
while True:
socket.send('hello\n')
gevent.sleep(1)
class HelloApplication(Service):
def __init__(self):
self.add_service(HelloWorld())
self.add_service(
ServerWrapper(
StreamServer(
('127.0.0.1',1234),
handle_tcp)
)
)
import os
import sys
daemon = bool(os.environ.get("DAEMONIZE", True))
message = "Services all the way down."
service = "hello.HelloApplication"
logfile = 'hello.log'
pidfile = 'hello.pid'
and the exception:
2012-05-09 14:33:07,853 INFO runner: Stopping.
Traceback (most recent call last):
File "/home/hw1979/test/local/lib/python2.7/site-packages/gevent/greenlet.py", line 390, in run
result = self._run(*self.args, **self.kwargs)
File "/home/hw1979/test/local/lib/python2.7/site-packages/gevent/baseserver.py", line 146, in start
self.pre_start()
File "/home/hw1979/test/local/lib/python2.7/site-packages/gevent/server.py", line 95, in pre_start
self._handle = self.handle
AttributeError: 'StreamServer' object has no attribute 'handle'
<Greenlet at 0xdc6f50: <bound method StreamServer.start of <StreamServer at 0xf2c390 fileno=3 address=
127.0.0.1:1234>>> failed with AttributeError