У меня есть проект AWS-chalice, и я хочу создать исполняемый файл из этого проекта.
Поэтому вместо запуска chalice local
для запуска локального сервера я просто вызываю исполняемый файл.
У меня есть проект AWS-chalice, и я хочу создать исполняемый файл из этого проекта.
Поэтому вместо запуска chalice local
для запуска локального сервера я просто вызываю исполняемый файл.
Я придумал это решение на основе Pyinstaller:
вызовите этот код из конца app.py
:
import os
from chalice.cli import CLIFactory
from chalice.local import LocalDevServer
def start_standalone(app):
stage = os.environ.get("stage", "dev")
print(f"initializing standalone server: {stage}")
factory = CLIFactory(project_dir=os.getcwd(), debug=True, environ=os.environ, profile="dev")
config = factory.create_config_obj(
chalice_stage_name=stage
)
os.environ = {**os.environ, **config.environment_variables}
host = os.environ.get("host", '127.0.0.1')
port = os.environ.get("port", 8000)
s = LocalDevServer(app, config=config, host=host, port=port)
s.serve_forever()
#handle_special_events(app) # to handle SQS and Cron; didn't include the code as it is not the main goal of this question
На этом этапе вы можете запустить python app.py
, чтобы убедиться, что ваши изменения действительны.
Затем с помощью Pyinstaller запустите pyinstaller -F --add-data="./.chalice/config.json:.chalice" app.py
PS: вы можете переместить часть о переменных среды в начало app.py
, чтобы ее можно было использовать при инициализации.