如何从 AWS-chalice 应用程序生成可执行文件?
How to generate an executable from an AWS-chalice application?
我有一个 AWS-chalice 项目,我想从该项目生成一个可执行文件。
所以我没有运行 chalice local
启动本地服务器,而是调用可执行文件。
我想出了这个解决方案,基于 Pyinstaller:
- 手动注入环境变量
- 手动启动本地服务器
- 手动拦截和处理特殊事件(如 SQS、Cron 等)
- 用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
的开头,以便它可以在您的初始化中使用。
我有一个 AWS-chalice 项目,我想从该项目生成一个可执行文件。
所以我没有运行 chalice local
启动本地服务器,而是调用可执行文件。
我想出了这个解决方案,基于 Pyinstaller:
- 手动注入环境变量
- 手动启动本地服务器
- 手动拦截和处理特殊事件(如 SQS、Cron 等)
- 用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
的开头,以便它可以在您的初始化中使用。