我刚刚开始使用 SAM 使用 AWS 无服务器并遇到以下问题:
SAM invoke 似乎找不到我的 lambda 处理程序正在导入的 python 模块,但我可以以其他方式导入该模块。
该结构我的项目是:
根目录/
我在 python3.6 虚拟环境中工作,我已经使用安装工具安装了我的 python 包(mymodulename):
python setup.py develop
Run Code Online (Sandbox Code Playgroud)
因此,如果我在虚拟环境中冻结 pip,我会看到:
Pillow==6.0.0
PyPDF2==1.26.0
reportlab==3.5.20
mymodulename==0.5.0
Run Code Online (Sandbox Code Playgroud)
另外如果我去:
cd root-dir/aws/sam/
python
>>> import mymodulename
Run Code Online (Sandbox Code Playgroud)
这成功了。所以它在python路径上。
但是当我在本地调用 sam 时,即:
sam local invoke MyAWSServiceFunction --event ../sam/test/test_event.json
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
2019-05-02 09:19:17 Found credentials in shared credentials file: ~/.aws/credentials
2019-05-02 09:19:18 Invoking app.lambda_handler (python3.6)
Fetching lambci/lambda:python3.6 Docker container image......
2019-05-02 …Run Code Online (Sandbox Code Playgroud) 我想以编程方式检查 print 是否是内置的 Python 函数。
dir(__builtins__)从 Python 命令行查询时使用 Python 3.4.x我得到了我正在寻找的内容:
['ArithmeticError', 'AssertionError', ..... , 'pow', 'print' ... ]
Run Code Online (Sandbox Code Playgroud)
但是当在 .py 文件中使用它时:
import sys
def foo:
print(dir(__builtins__))
Run Code Online (Sandbox Code Playgroud)
调用返回:
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__',
'__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
'__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__',
'__len__', '__lt__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__setattr__', '__setitem__',
'__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy',
'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault',
'update', 'values']
Run Code Online (Sandbox Code Playgroud)
我__builtins__在任何时候都没有重新定义。
比如说,我有一个函数,func foo(x) error { if x == y ... return err}我想在多个 go 例程中执行并聚合错误(最好使用错误组,如下面的常见示例),但不确定这是否可能?
import "golang.org/x/sync/errgroup"
var g errgroup.Group
g.Go(func() error {
resp, err := http.Get(url)
if err == nil {
resp.Body.Close()
}
return err
})
Run Code Online (Sandbox Code Playgroud) 我想使用控制器函数修改我的 QtIFW(3.0) 安装程序的流程,这似乎很简单,但是我似乎找不到一个很好的例子来说明函数/脚本应该驻留在何处以及如何制作安装程序意识到这一点。
我尝试过但没有成功的事情:
我的控制器脚本(controller.qs)目前只是样板:
function Controller() {
console.log("Controller()");
}
Run Code Online (Sandbox Code Playgroud)
在安装程序运行时,安装程序按预期执行,但控制器功能从未被调用。
我需要使用新转换的 ID(作为“记录”传入)更新一个相当大的 psql 表。我在下面创建了这个函数来利用 pgxpool 的连接池和请求批处理,如果我使用不同的客户端应用这些事务,它们会更新数据库,而且如果我查看打印出来的结果,它们表明每次 1 行受到影响,但是当我从数据库中检索这些行,它们保持不变。我是否以某种方式错误地使用了批处理?
import (
...
"github.com/jackc/pgconn"
"github.com/jackc/pgx/v4"
"github.com/jackc/pgx/v4/pgxpool"
log "github.com/sirupsen/logrus"
)
func SetNewSubscriptionValuesBatch(dsn string, records map[string]string) error {
var db *pgxpool.Pool
db, err := pgxpool.Connect(context.Background(), dsn)
defer db.Close()
if err != nil {
panic(err)
}
tx, err := db.Begin(context.Background())
if err != nil {
panic(err)
}
b := &pgx.Batch{}
for id, subID := range records {
sqlStatement := `
UPDATE event
SET subscription_id_2 = $2
WHERE id = $1;`
b.Queue(sqlStatement, id, subID)
}
batchResults …Run Code Online (Sandbox Code Playgroud) 使用 c# 我想在一个结构中设置变量,该结构是类的成员,从该类中。对于 c# 来说还很陌生。帮助表示赞赏。
class myclass
{
public struct mystruct
{
public int something;
}
public void init()
{
mystruct.something = 20; // <-- this is an error
}
static void Main(string[] args)
{
myclass c = new myclass();
c.init();
}
}
Run Code Online (Sandbox Code Playgroud)
错误:“非静态字段、方法或属性 myclass.mystruct.something 需要对象引用”
go ×2
python-3.x ×2
aws-lambda ×1
c# ×1
goroutine ×1
pgx ×1
postgresql ×1
python ×1
qt ×1
qt-installer ×1
qt5 ×1