()
| 76 | |
| 77 | |
| 78 | def _run_server(): |
| 79 | host = cfg.CONF.stream.host |
| 80 | port = cfg.CONF.stream.port |
| 81 | |
| 82 | LOG.info( |
| 83 | "(PID=%s) ST2 Stream API is serving on http://%s:%s.", os.getpid(), host, port |
| 84 | ) |
| 85 | |
| 86 | max_pool_size = eventlet.wsgi.DEFAULT_MAX_SIMULTANEOUS_REQUESTS |
| 87 | worker_pool = eventlet.GreenPool(max_pool_size) |
| 88 | sock = eventlet.listen((host, port)) |
| 89 | |
| 90 | def queue_shutdown(signal_number, stack_frame): |
| 91 | deregister_service(STREAM) |
| 92 | eventlet.spawn_n( |
| 93 | shutdown_server_kill_pending_requests, |
| 94 | sock=sock, |
| 95 | worker_pool=worker_pool, |
| 96 | wait_time=WSGI_SERVER_REQUEST_SHUTDOWN_TIME, |
| 97 | ) |
| 98 | |
| 99 | # We register a custom SIGINT handler which allows us to kill long running active requests. |
| 100 | # Note: Eventually we will support draining (waiting for short-running requests), but we |
| 101 | # will still want to kill long running stream requests. |
| 102 | register_stream_signal_handlers(handler_func=queue_shutdown) |
| 103 | |
| 104 | wsgi.server(sock, app.setup_app(), custom_pool=worker_pool) |
| 105 | return 0 |
| 106 | |
| 107 | |
| 108 | def _teardown(): |
no test coverage detected