46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
|
|
import sys
|
|
|
|
from eventlet import api
|
|
from eventlet import httpc
|
|
|
|
|
|
def real_application(env, start_response):
|
|
#result = httpc.get('http://127.0.0.1:8081/')
|
|
start_response('200 OK', [('Content-type', 'text/plain')])
|
|
#sys.stderr.write("RESULT %r" % (result, ))
|
|
return 'hi'
|
|
|
|
|
|
def wrap_application(master, env, start_response):
|
|
result = real_application(env, start_response)
|
|
## Should catch exception and return here?
|
|
#sys.stderr.write("RESULT2 %r" % (result, ))
|
|
master.switch((result, None))
|
|
return None, None
|
|
|
|
|
|
def application(env, start_response):
|
|
hub = api.get_hub()
|
|
|
|
hub.poll_register = env['ngx.poll_register']
|
|
hub.poll_unregister = env['ngx.poll_unregister']
|
|
hub.sleep = env['ngx.sleep']
|
|
hub.current_application = api.getcurrent()
|
|
|
|
slave = api.greenlet.greenlet(wrap_application)
|
|
result = slave.switch(
|
|
hub.current_application, env, start_response)
|
|
|
|
while True:
|
|
#sys.stderr.write("RESULT3 %r" % (result, ))
|
|
if result is None or result == (None, None):
|
|
yield ''
|
|
else:
|
|
if isinstance(result, tuple):
|
|
yield result[0]
|
|
else:
|
|
yield result
|
|
return
|
|
result = hub.switch()
|