mod-wsgi-standalone 6.0.0.dev3__tar.gz → 6.0.0.dev4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/PKG-INFO +1 -1
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/mod_wsgi_standalone.egg-info/PKG-INFO +1 -1
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/express/apache.py +4 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/express/options.py +24 -2
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/express/scripts.py +21 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/express/server.py +52 -1
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_daemon.c +8 -2
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_version.h +1 -1
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/CREDITS.rst +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/LICENSE +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/MANIFEST.in +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/Makefile.in +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/README-express.rst +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/README-standalone.rst +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/README.rst +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/configure +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/configure.ac +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/images/__init__.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/images/snake-whiskey.jpg +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/mod_wsgi_standalone.egg-info/SOURCES.txt +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/mod_wsgi_standalone.egg-info/dependency_links.txt +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/mod_wsgi_standalone.egg-info/entry_points.txt +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/mod_wsgi_standalone.egg-info/not-zip-safe +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/mod_wsgi_standalone.egg-info/requires.txt +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/mod_wsgi_standalone.egg-info/top_level.txt +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/pyproject.toml +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/setup.cfg +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/setup.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/__init__.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/diagnostics/__init__.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/diagnostics/environ.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/diagnostics/hello.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/express/__init__.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/express/cli.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/express/management/__init__.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/express/management/commands/__init__.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/express/management/commands/runmodwsgi.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/express/platform.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/express/reloader.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/express/runtime.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/__init__.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/management/__init__.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/management/commands/__init__.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/management/commands/runmodwsgi.py +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/mod_wsgi.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_adapter.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_adapter.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_apache.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_apache.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_auth.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_auth.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_buckets.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_buckets.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_config.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_config.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_convert.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_convert.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_daemon.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_dispatch.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_dispatch.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_environ.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_environ.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_execute.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_execute.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_gc.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_gc.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_input.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_input.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_interp.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_interp.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_logger.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_logger.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_memory.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_memory.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_metrics.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_metrics.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_module.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_module.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_python.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_remote.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_remote.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_restrict.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_restrict.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_server.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_server.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_shutdown.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_shutdown.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_signal.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_signal.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_stream.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_stream.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_telemetry.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_telemetry.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_thread.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_thread.h +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_validate.c +0 -0
- {mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_validate.h +0 -0
|
@@ -317,6 +317,10 @@ WSGISlowRequests %(slow_requests)s
|
|
|
317
317
|
WSGISwitchInterval %(switch_interval)s
|
|
318
318
|
</IfDefine>
|
|
319
319
|
|
|
320
|
+
<IfDefine MOD_WSGI_FREE_THREADING>
|
|
321
|
+
WSGIFreeThreading On
|
|
322
|
+
</IfDefine>
|
|
323
|
+
|
|
320
324
|
<IfDefine MOD_WSGI_TELEMETRY_OPTIONS>
|
|
321
325
|
%(telemetry_options)s
|
|
322
326
|
</IfDefine>
|
|
@@ -540,10 +540,25 @@ add_option('all', '--telemetry-service', metavar='TARGET',
|
|
|
540
540
|
'ingester). Remote "udp:host:port" targets are not supported. '
|
|
541
541
|
'Off by default.')
|
|
542
542
|
|
|
543
|
+
add_option('unix', '--enable-telemetry', action='store_true', default=False,
|
|
544
|
+
help='Bundle a telemetry ingester and web UI alongside the WSGI '
|
|
545
|
+
'application. Generates a service-script daemon that runs the '
|
|
546
|
+
'mod_wsgi-telemetry ingester on a UNIX socket inside the server '
|
|
547
|
+
'root and emits WSGITelemetryService pointing at that socket so '
|
|
548
|
+
'the WSGI processes report to it. Requires the mod_wsgi-telemetry '
|
|
549
|
+
'package to be installed. Mutually exclusive with '
|
|
550
|
+
'--telemetry-service.')
|
|
551
|
+
|
|
552
|
+
add_option('unix', '--telemetry-ui-port', type='int', default=8888,
|
|
553
|
+
metavar='NUMBER', help='HTTP port the telemetry web UI binds to '
|
|
554
|
+
'on 127.0.0.1 when --enable-telemetry is set. Defaults to '
|
|
555
|
+
'%default. Two express instances on the same host need distinct '
|
|
556
|
+
'ports to avoid a bind collision.')
|
|
557
|
+
|
|
543
558
|
add_option('all', '--telemetry-interval', type='float', default=1.0,
|
|
544
559
|
metavar='SECONDS', help='Metrics reporter sampling interval '
|
|
545
|
-
'in seconds. Only applies when --telemetry-service
|
|
546
|
-
'Defaults to %default.')
|
|
560
|
+
'in seconds. Only applies when --telemetry-service or '
|
|
561
|
+
'--enable-telemetry is set. Defaults to %default.')
|
|
547
562
|
|
|
548
563
|
add_option('all', '--slow-requests', type='float', default=None,
|
|
549
564
|
metavar='SECONDS', help='Enable slow-request reporting and set '
|
|
@@ -558,6 +573,13 @@ add_option('all', '--switch-interval', type='float', default=None,
|
|
|
558
573
|
'switch-interval option on WSGIDaemonProcess. Defaults to '
|
|
559
574
|
'Python\'s built-in 0.005 (5 ms) when unset.')
|
|
560
575
|
|
|
576
|
+
add_option('all', '--free-threading', action='store_true', default=False,
|
|
577
|
+
help='Emit WSGIFreeThreading On in the generated configuration to '
|
|
578
|
+
'run the Python interpreter without the GIL. Requires a Python '
|
|
579
|
+
'build with free-threading support (PEP 703, --disable-gil); '
|
|
580
|
+
'mod_wsgi-express will exit with an error if the running Python '
|
|
581
|
+
'does not support it.')
|
|
582
|
+
|
|
561
583
|
add_option('all', '--telemetry-options', action='append', default=[],
|
|
562
584
|
metavar='ARGS', help='Apache-Options-style metrics-capture '
|
|
563
585
|
'toggle, passed verbatim to a WSGITelemetryOptions directive in '
|
|
@@ -166,6 +166,27 @@ def generate_wsgi_handler_script(options):
|
|
|
166
166
|
with open(path, 'w') as fp:
|
|
167
167
|
print(WSGI_DEFAULT_SCRIPT % options, file=fp)
|
|
168
168
|
|
|
169
|
+
TELEMETRY_SERVICE_SCRIPT = '''
|
|
170
|
+
# Auto-generated by mod_wsgi-express --enable-telemetry. Runs the
|
|
171
|
+
# mod_wsgi-telemetry ingester and web UI inside a WSGIDaemonProcess
|
|
172
|
+
# threads=0 service daemon. The WSGI processes report to the UNIX
|
|
173
|
+
# socket below via the WSGITelemetryService directive in httpd.conf.
|
|
174
|
+
|
|
175
|
+
from mod_wsgi.telemetry.server import main
|
|
176
|
+
|
|
177
|
+
main([
|
|
178
|
+
"--listen", "unix:%(telemetry_socket)s",
|
|
179
|
+
"--http-host", "127.0.0.1",
|
|
180
|
+
"--http-port", "%(telemetry_ui_port)s",
|
|
181
|
+
"--log-level", "INFO",
|
|
182
|
+
])
|
|
183
|
+
'''
|
|
184
|
+
|
|
185
|
+
def generate_telemetry_service_script(options):
|
|
186
|
+
path = os.path.join(options['server_root'], 'telemetry-service.py')
|
|
187
|
+
with open(path, 'w') as fp:
|
|
188
|
+
print(TELEMETRY_SERVICE_SCRIPT % options, file=fp)
|
|
189
|
+
|
|
169
190
|
WSGI_CONTROL_SCRIPT = """
|
|
170
191
|
#!%(shell_executable)s
|
|
171
192
|
|
|
@@ -5,12 +5,16 @@ import math
|
|
|
5
5
|
import os
|
|
6
6
|
import posixpath
|
|
7
7
|
import sys
|
|
8
|
+
import sysconfig
|
|
8
9
|
import tempfile
|
|
9
10
|
|
|
10
11
|
from . import apxs_config
|
|
11
12
|
from .platform import find_program, MOD_WSGI_SO, PYTHON_DYLIB
|
|
12
13
|
from .apache import generate_apache_config
|
|
13
|
-
from .scripts import
|
|
14
|
+
from .scripts import (
|
|
15
|
+
generate_wsgi_handler_script, generate_control_scripts,
|
|
16
|
+
generate_telemetry_service_script,
|
|
17
|
+
)
|
|
14
18
|
|
|
15
19
|
def _mpm_module_defines(modules_directory, preferred=None):
|
|
16
20
|
if os.name == 'nt':
|
|
@@ -367,6 +371,41 @@ def setup_server(command, args, options):
|
|
|
367
371
|
else:
|
|
368
372
|
options['server_metrics_flag'] = 'Off'
|
|
369
373
|
|
|
374
|
+
if options['enable_telemetry']:
|
|
375
|
+
if options['telemetry_service']:
|
|
376
|
+
raise ConfigurationError(
|
|
377
|
+
"--enable-telemetry and --telemetry-service are "
|
|
378
|
+
"mutually exclusive: --enable-telemetry generates an "
|
|
379
|
+
"ingester service and points the WSGI processes at "
|
|
380
|
+
"it, so an explicit telemetry target would conflict.")
|
|
381
|
+
|
|
382
|
+
try:
|
|
383
|
+
import mod_wsgi.telemetry.server # noqa: F401
|
|
384
|
+
except ImportError:
|
|
385
|
+
raise ConfigurationError(
|
|
386
|
+
"--enable-telemetry requires the mod_wsgi-telemetry "
|
|
387
|
+
"package: install it with "
|
|
388
|
+
"'pip install mod_wsgi-telemetry'.")
|
|
389
|
+
|
|
390
|
+
for name, _ in options['service_scripts'] or []:
|
|
391
|
+
if name == 'telemetry':
|
|
392
|
+
raise ConfigurationError(
|
|
393
|
+
"--enable-telemetry generates a service named "
|
|
394
|
+
"'telemetry'; rename the conflicting "
|
|
395
|
+
"--service-script entry or drop "
|
|
396
|
+
"--enable-telemetry.")
|
|
397
|
+
|
|
398
|
+
socket_path = posixpath.join(options['server_root'],
|
|
399
|
+
'telemetry.sock')
|
|
400
|
+
options['telemetry_socket'] = socket_path
|
|
401
|
+
options['telemetry_service'] = 'unix:%s' % socket_path
|
|
402
|
+
|
|
403
|
+
script_path = posixpath.join(options['server_root'],
|
|
404
|
+
'telemetry-service.py')
|
|
405
|
+
options['service_scripts'] = list(
|
|
406
|
+
options['service_scripts'] or [])
|
|
407
|
+
options['service_scripts'].append(('telemetry', script_path))
|
|
408
|
+
|
|
370
409
|
if options['telemetry_service']:
|
|
371
410
|
target = options['telemetry_service']
|
|
372
411
|
if not target.startswith('unix:'):
|
|
@@ -396,6 +435,13 @@ def setup_server(command, args, options):
|
|
|
396
435
|
options['switch_interval'] = ''
|
|
397
436
|
options['daemon_switch_interval_option'] = ''
|
|
398
437
|
|
|
438
|
+
if options['free_threading']:
|
|
439
|
+
if not sysconfig.get_config_var('Py_GIL_DISABLED'):
|
|
440
|
+
raise ConfigurationError(
|
|
441
|
+
"--free-threading requires a Python build with "
|
|
442
|
+
"free-threading support (PEP 703). Rebuild Python "
|
|
443
|
+
"with --disable-gil to use it.")
|
|
444
|
+
|
|
399
445
|
if options['handler_scripts']:
|
|
400
446
|
handler_scripts = []
|
|
401
447
|
for extension, script in options['handler_scripts']:
|
|
@@ -781,6 +827,8 @@ def setup_server(command, args, options):
|
|
|
781
827
|
options['httpd_arguments_list'].append('-DMOD_WSGI_SLOW_REQUESTS')
|
|
782
828
|
if options['switch_interval'] != '':
|
|
783
829
|
options['httpd_arguments_list'].append('-DMOD_WSGI_SWITCH_INTERVAL')
|
|
830
|
+
if options['free_threading']:
|
|
831
|
+
options['httpd_arguments_list'].append('-DMOD_WSGI_FREE_THREADING')
|
|
784
832
|
if options['telemetry_options']:
|
|
785
833
|
options['httpd_arguments_list'].append('-DMOD_WSGI_TELEMETRY_OPTIONS')
|
|
786
834
|
options['telemetry_options'] = '\n'.join(
|
|
@@ -856,6 +904,9 @@ def setup_server(command, args, options):
|
|
|
856
904
|
|
|
857
905
|
generate_wsgi_handler_script(options)
|
|
858
906
|
|
|
907
|
+
if options['enable_telemetry']:
|
|
908
|
+
generate_telemetry_service_script(options)
|
|
909
|
+
|
|
859
910
|
print('Server URL :', options['url'])
|
|
860
911
|
|
|
861
912
|
if options['https_url']:
|
|
@@ -2991,9 +2991,15 @@ static void wsgi_daemon_main(apr_pool_t *p, WSGIDaemonProcess *daemon)
|
|
|
2991
2991
|
}
|
|
2992
2992
|
}
|
|
2993
2993
|
|
|
2994
|
-
/*
|
|
2994
|
+
/*
|
|
2995
|
+
* Start telemetry reporter if configured. Skip for service-script
|
|
2996
|
+
* daemons (threads=0): they handle no requests, so there is
|
|
2997
|
+
* nothing to accumulate, and an ingester-hosting service script
|
|
2998
|
+
* would otherwise report telemetry datagrams to itself.
|
|
2999
|
+
*/
|
|
2995
3000
|
|
|
2996
|
-
|
|
3001
|
+
if (daemon->group->threads != 0)
|
|
3002
|
+
wsgi_telemetry_start_reporter(p);
|
|
2997
3003
|
|
|
2998
3004
|
/* Initialise worker stack. */
|
|
2999
3005
|
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
#define MOD_WSGI_MAJORVERSION_NUMBER 6
|
|
27
27
|
#define MOD_WSGI_MINORVERSION_NUMBER 0
|
|
28
28
|
#define MOD_WSGI_MICROVERSION_NUMBER 0
|
|
29
|
-
#define MOD_WSGI_VERSION_STRING "6.0.0.
|
|
29
|
+
#define MOD_WSGI_VERSION_STRING "6.0.0.dev4"
|
|
30
30
|
|
|
31
31
|
/* ------------------------------------------------------------------------- */
|
|
32
32
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/diagnostics/__init__.py
RENAMED
|
File without changes
|
{mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/diagnostics/environ.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/express/management/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/management/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_dispatch.c
RENAMED
|
File without changes
|
{mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_dispatch.h
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_restrict.c
RENAMED
|
File without changes
|
{mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_restrict.h
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_shutdown.c
RENAMED
|
File without changes
|
{mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_shutdown.h
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_telemetry.c
RENAMED
|
File without changes
|
{mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_telemetry.h
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_validate.c
RENAMED
|
File without changes
|
{mod_wsgi_standalone-6.0.0.dev3 → mod_wsgi_standalone-6.0.0.dev4}/src/server/wsgi_validate.h
RENAMED
|
File without changes
|