As to your request for workaround for having to make a request to trigger creation of thread, you have two options. The first is to use the WSGIImportScript directive to preload your WSGI script file at startup. The second being to achieve the same thing using process-group and application-group options to WSGIScriptAlias.
The second way is preferred. You also want to make sure you are using daemon mode such that if WSGI script file is changed that whole process is reloaded. If you use embedded mode and WSGI script file changed, just the script is reloaded and you will create a second background thread.
Thus, for daemon mode use:
WSGIDaemonProcess mysite
WSGIScriptAlias / /some/path/django.wsgi process-group=mysite application-group=%{GLOBAL}
That process-group and application-group options are both explicitly supplied to WSGIScriptAlias has side effect of preloading WSGI script file on process start before any requests have arrived.
Note, you must be using mod_wsgi 3.0 or later for theis latter ability of supplying options to WSGIScriptAlias to achieve this.
UPDATE 1
If you are on Windows and don't have access to daemon mode:
WSGIImportScript /some/path/django.wsgi application-group=%{GLOBAL}
WSGIScriptAlias / /some/path/django.wsgi application-group=%{GLOBAL}
Seems to be an omission in mod_wsgi that setting just application-group for WSGIScriptAlias when daemon mode not available, still results in preloading.