我正在开发一个 Zappa 应用程序,目前正在尝试制作一个小监视脚本,该脚本可以require.cache在文件更改时停止服务器、清除然后重新要求并重新启动服务器,例如:
# watch all dependent files
for file of require.cache
fs.watch file, ->
# attach a handler to 'close'
# -- here's the issue: this takes far too long to trigger
server.on 'close', ->
server = require './server'
server.start()
# log the new server's id
console.log server.id
# stop the current server instance
server.stop()
# clear require's cache
delete require.cache[f] for f of require.cache
Run Code Online (Sandbox Code Playgroud)
我的请求处理程序中还有一行console.log server.id,以便我可以检查 ID 是否匹配。
所以,发生的情况是:当我更改依赖项时,服务器停止,新的服务器启动并记录新的 ID,这一切都是肉汁。但是,在之后的一段随机时间内,对服务器的请求仍会记录旧 ID,这表明旧侦听器仍以某种方式附加。最终,侦听器似乎“切换”并记录了新的 ID。
更新:这似乎与事件有关 …
我正在尝试如何在持续交付环境中将 lambda 部署到不同的 AWS 帐户中。目前我坚持这一点。您能给我一些线索吗?作为 AWS CLI 的示例,我们可以定义需要使用的配置文件。
前任:aws s3 ls --profile account2
在AWS配置文件中,我们定义配置文件如下。
[default]
aws_access_key_id = XXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[account2]
aws_access_key_id = XXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)
我们可以对 zappa 部署使用相同的方法吗?
非常感谢任何解决此问题的线索。
我有一个基于 Flask 的 Web 应用程序,可以通过 Zappa 部署到 AWS Lambda。一切都很好。
\nFlask 文档说:
\n\n\n虽然轻量且易于使用,但 Flask\xe2\x80\x99s 内置服务器不适合生产,因为它\xe2\x80\x99t 不能很好地扩展。此处记录了一些可用于在生产中正确运行 Flask 的选项。
\n
在独立服务器上,Python 是单线程的(全局解释器锁(GIL)等),因此如果没有应有的谨慎和注意,就无法很好地处理多个请求。
\n在 AWS Lambda(可能还有其他 FaaS 基础设施)上,每个 HTTP 请求都会获得一个单独的 Python 实例,因此 GIL 不是问题,并且 Lambda 通过使用多个函数调用来负责扩展。
\n因此,在 AWS Lambda 上运行时,是否强烈建议使用 WGSI 容器(Gunicorn、uWGSI 等)?为什么或者为什么不?
\n我猜测可能相关的一些因素包括:
\n我已将 python 项目从 2.7 迁移到 3.8。我正在尝试使用 zappa 进行部署。但是,一旦开始更新 Lambda 函数配置,就会遇到此错误。
Updating Lambda function configuration..
Oh no! An error occurred! :(
==============
Traceback (most recent call last):
File "/Users/leilakarimi/Projects/ATGWSams/venv/lib/python3.7/site-packages/zappa/cli.py", line 3422, in handle
sys.exit(cli.handle())
File "/Users/leilakarimi/Projects/ATGWSams/venv/lib/python3.7/site-packages/zappa/cli.py", line 588, in handle
self.dispatch_command(self.command, stage)
File "/Users/leilakarimi/Projects/ATGWSams/venv/lib/python3.7/site-packages/zappa/cli.py", line 644, in dispatch_command
self.vargs["docker_image_uri"],
File "/Users/leilakarimi/Projects/ATGWSams/venv/lib/python3.7/site-packages/zappa/cli.py", line 1194, in update
endpoint_configuration=self.endpoint_configuration,
File "/Users/leilakarimi/Projects/ATGWSams/venv/lib/python3.7/site-packages/zappa/core.py", line 2417, in create_stack_template
self.cf_template.add_description("Automatically generated with Zappa")
AttributeError: 'Template' object has no attribute 'add_description'
Run Code Online (Sandbox Code Playgroud)
我发现了这个问题并尝试按照这篇文章中的建议降级对流层 ,但我再次面临一个新错误,如下所示:
ERROR: Command errored out …Run Code Online (Sandbox Code Playgroud) 我正在尝试一个zappa节点应用程序,我无法让它工作超出一个简单的例子.
我有application.coffee
require('zappajs') ->
@set views: "#{__dirname}/views"
@set 'view engine': 'jade'
@use 'bodyParser', 'methodOverride', @app.router, 'static'
@configure
development: => @use errorHandler: {dumpExceptions: on}
production: => @use 'errorHandler'
@get '/': -> @render 'index'
Run Code Online (Sandbox Code Playgroud)
我收到了一个错误.Zappa似乎在为文件名添加一个guid.
example/app/views/7b16eeab-de6f-41b0-b196-8f23f4b7237d/index.jade
Run Code Online (Sandbox Code Playgroud)
这是完整的痕迹
Error: ENOENT, no such file or directory '/Users/irfn/project/example/app/views/7b16eeab-de6f-41b0-b196-8f23f4b7237d/index.jade'
at Object.fs.openSync (fs.js:338:18)
at Object.fs.readFileSync (fs.js:182:15)
at Object.rethrow (/Users/irfn/project/example/node_modules/jade/lib/runtime.js:155:27)
at parse (/Users/irfn/project/example/node_modules/jade/lib/jade.js:116:13)
at Object.exports.compile (/Users/irfn/project/example/node_modules/jade/lib/jade.js:163:9)
at Function.exports.compile (/Users/irfn/project/example/node_modules/zappajs/node_modules/express/lib/view.js:68:33)
at ServerResponse.res._render (/Users/irfn/project/example/node_modules/zappajs/node_modules/express/lib/view.js:417:18)
at ServerResponse.res.render (/Users/irfn/project/example/node_modules/zappajs/node_modules/express/lib/view.js:318:17)
at Object.zappa.app.app.(anonymous function).apply.concat.render (/Users/irfn/project/example/node_modules/zappajs/lib/zappa.js:593:33)
at Object.zappa.app.app.(anonymous function).apply.concat.ctx.render (/Users/irfn/project/example/node_modules/zappajs/lib/zappa.js:545:31)
Run Code Online (Sandbox Code Playgroud)
这是我的包json依赖项的设置方式
"dependencies": {
"coffee-script": "1.3.3", …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Mocha中为我正在使用Zappa.js编写的应用程序设置测试.到目前为止,我一直在关注本教程,并将我需要的东西从JS转换为Coffeescript.
但是我试图运行测试时有点困惑.我有一个Makefile,目前看起来像这样:
REPORTER = dot
test:
@NODE_ENV=test ./node_modules/.bin/mocha \
--reporter $(REPORTER) \
.PHONY: test
Run Code Online (Sandbox Code Playgroud)
我已经设置了我的package.json文件来运行这样的测试:
{
"scripts": {
"test": "make test"
}
}
Run Code Online (Sandbox Code Playgroud)
我发现的问题是,因为我正在尝试使用Coffeescript编写我的Mocha测试,当我运行"npm test"时,Mocha不会在"test /"文件夹中选择任何测试.我知道一个事实,我可以通过在终端中使用以下内容告诉Mocha运行.coffee文件(有效):
mocha --compilers coffee:coffee-script
Run Code Online (Sandbox Code Playgroud)
我想知道的是如何告诉Mocha默认使用Coffeescript文件?
我正在运行此代码以使用 Twilio 发送短信...
client.messages.create(
to=form.phone.data,
from_="+1xxxxxxxxxx",
body="This is a text message"
Run Code Online (Sandbox Code Playgroud)
我的应用程序使用 Python 的 Zappa 托管在 AWS Lambda 上。问题是我需要能够安排这条消息在未来 10 分钟内发送。
Zappa 提供任务执行,但他们的文档不清楚应该如何完成这样的事情。
谢谢您的帮助。
使用连接到 RDS MySQL 的 zappa 将 django 部署到 AWS Lambda,无法部署并显示错误: NameError: name '_mysql' 未定义:
zappa 更新开发给出错误: 错误:警告!对已部署 lambda 的状态检查失败。对“/”的 GET 请求产生 502 响应代码
AWS Cloudwatch 日志:
在 import MySQLdb as Database File "/var/task/MySQLdb/ init .py" 中,第 24 行,在 version_info、_mysql.version_info、_mysql 中。文件名错误:名称“_mysql”未定义
我的settings.py数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'raags-instance', # DB Instance created in AWS RDS
'USER': 'xyz',
'PASSWORD': 'passwordpassword',
'HOST': '*********.us-east-2.rds.amazonaws.com',
'PORT': 3306,
}
}
Run Code Online (Sandbox Code Playgroud)
对于DATABASES = {}成功部署,我是 zappa 部署和无服务器架构的新手,请协助,我无法在任何地方找到解决方案。提前致谢
我目前在 AWS Lambda 上使用 Zappa/Flask (Py 3.7) 有一个 API
我的 zappa_Settings.json 文件如下所示:
{
"beta": {
"app_function": "application.application",
"profile_name": "changed",
"project_name": "changed",
"runtime": "python3.7",
"s3_bucket": "zappa-<obscured>"
}
}
Run Code Online (Sandbox Code Playgroud)
然而,我们现在正在开发一组新的功能,并且感觉表明我们有一个单独的分支或阶段,例如“测试”,我们在部署这些功能并评估成熟度之前将其推入实时环境。
问题是,尽我所能,我无法从控制台创建新阶段:
zappa init
Run Code Online (Sandbox Code Playgroud)
崩溃与
click.exceptions.ClickException:该项目已经有一个 zappa_settings.json 文件!
zappa init stage2
Run Code Online (Sandbox Code Playgroud)
产生
用法:zappa [-h] [-v] [--color {auto,never,always}] {认证,部署,init,包,模板,调用,管理,回滚,计划,状态,尾部,取消部署,取消计划,更新,shell} ... zappa:错误:无法识别的参数:stage2
zappa deploy stage2
Run Code Online (Sandbox Code Playgroud)
输出
(botocore 1.12.86 (/home/user/Code/Python/project/lib/python3.6/site-packages), Requirement.parse('botocore<1.11.0,>=1.10.82'), {'boto3'})
Calling deploy for stage stage2..
Error: Please define stage 'stage2' in your Zappa settings.
Run Code Online (Sandbox Code Playgroud)
现在,如果我手动为阶段创建条目,则需要有一个 s3 存储桶用于部署。重复使用与第一个实例相同的实例是否安全?我在这里要做什么来部署新阶段?
在尝试部署我的 AWS Lambda 函数时在我的 Stacktrace 上出现此错误
(python-dateutil 2.8.1 (/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages), Requirement.parse('python-dateutil<2.7.0'), {'zappa'})
Calling deploy for stage development..
Oh no! An error occurred! :(
==============
Traceback (most recent call last):
File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/cli.py", line 2778, in handle
sys.exit(cli.handle())
File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/cli.py", line 512, in handle
self.dispatch_command(self.command, stage)
File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/cli.py", line 549, in dispatch_command
self.deploy(self.vargs['zip'])
File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/cli.py", line 709, in deploy
self.zappa.create_iam_roles()
File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/core.py", line 2557, in create_iam_roles
role, credentials_arn = self.get_credentials_arn()
File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/core.py", line 2536, in get_credentials_arn
self.credentials_arn = role.arn
File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/boto3/resources/factory.py", line 339, …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 gitlab CI 通过 zappa 在 aws lambda 上部署 Flask 应用程序。由于无法通过 gitlab CI 进行内联编辑,因此我zappa_settings.json在远程计算机上生成了该文件,并且尝试使用它来执行zappa deploy dev.
我的zappa_settings.json文件:
{
"dev": {
"app_function": "main.app",
"aws_region": "eu-central-1",
"profile_name": "default",
"project_name": "prices-service-",
"runtime": "python3.7",
"s3_bucket": -MY_BUCKET_NAME-
}
}
Run Code Online (Sandbox Code Playgroud)
我的.gitlab-ci.yml文件:
image: ubuntu:18.04
stages:
- deploy
before_script:
- apt-get -y update
- apt-get -y install python3-pip python3.7 zip
- python3.7 -m pip install --upgrade pip
- python3.7 -V
- pip3.7 install virtualenv zappa
deploy_job:
stage: deploy
script:
- …Run Code Online (Sandbox Code Playgroud) 最近几天我正在尝试学习如何使用AWS,因为我想部署一些API。
到目前为止,我正在学习如何将API Gateway与Lambda 函数结合使用,这似乎是一个不错的工作流程。但是,因为我使用Flask-restplus编写 API ,所以我尝试了Zappa框架,该框架使用EventBridge (CloudWatch Events)作为我创建的每个 Lambda 函数的触发器。
所以我的问题是:
先感谢您。
zappa aws-lambda aws-api-gateway flask-restplus aws-event-bridge
zappa ×13
aws-lambda ×7
node.js ×3
django ×2
python ×2
python-3.x ×2
python-zappa ×2
amazon-sns ×1
coffeescript ×1
deployment ×1
express ×1
flask ×1
gitlab ×1
gitlab-ci ×1
lambda ×1
live ×1
makefile ×1
mocha.js ×1
mysql ×1
pug ×1
serverless ×1
twilio ×1
wsgi ×1