in src/asfquart/base.py [0:0]
def runx(self, /,
host="0.0.0.0", port=None,
debug=True, loop=None,
certfile=None, keyfile=None,
extra_files=frozenset(), # OK, because immutable
):
"""Extended version of Quart.run()
LOOP is the loop this app should run within. One will be constructed,
if this is not provided.
EXTRA_FILES is a set of files (### relative to?) that should be
watched for changes. If a change occurs, the app will be reloaded.
"""
# Default PORT is None, but it must be explicitly specified.
assert port, "The port must be specified."
# NOTE: much of the code below is direct from quart/app.py:Quart.run()
# This local "copy" is to deal with the custom watcher/reloader.
if loop is None:
loop = asyncio.new_event_loop()
loop.set_debug(debug)
asyncio.set_event_loop(loop)
# Create a factory for a trigger that watches for exceptions.
trigger = self.factory_trigger(loop, extra_files)
# Construct a task to run the app.
task = self.run_task(
host,
port,
debug,
certfile=certfile,
keyfile=keyfile,
shutdown_trigger=trigger,
)
### LOG/print some info about the app starting?
print(f' * Serving Quart app "{self.app_id}"')
print(f" * Debug mode: {self.debug}")
print(" * Using reloader: CUSTOM")
print(f" * Running on http://{host}:{port}")
print(" * ... CTRL + C to quit")
# Ready! Start running the app.
self.run_forever(loop, task)