Как сгенерировать исполняемый файл из приложения AWS-chalice?

#python #chalice

#python #чаша

Вопрос:

У меня есть проект AWS-chalice, и я хочу сгенерировать исполняемый файл из этого проекта.

Поэтому вместо запуска chalice local для запуска локального сервера я просто вызываю исполняемый файл.

Ответ №1:

Я придумал это решение, основанное на Pyinstaller:

  1. Ввод переменных среды вручную
  2. Вручную запустите локальный сервер
  3. Вручную перехватывать и обрабатывать специальные события (например, SQS, Cron, …)
  4. Скомпилируйте код с помощью 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 , чтобы ее можно было использовать при инициализации.