小编kat*_*ata的帖子

使用python向RESTful API发出请求

我有一个RESTful API,我使用EC2实例上的Elasticsearch实现来公开内容语料库.我可以通过从终端(MacOSX)运行以下命令来查询搜索:

curl -XGET 'http://ES_search_demo.com/document/record/_search?pretty=true' -d '{
  "query": {
    "bool": {
      "must": [
        {
          "text": {
            "record.document": "SOME_JOURNAL"
          }
        },
        {
          "text": {
            "record.articleTitle": "farmers"
          }
        }
      ],
      "must_not": [],
      "should": []
    }
  },
  "from": 0,
  "size": 50,
  "sort": [],
  "facets": {}
}'
Run Code Online (Sandbox Code Playgroud)

我如何使用python/requestspython/urllib2(不确定要使用哪一个 - 使用urllib2,但听到请求更好......)将上面变成API请求?我是否以标题或其他方式传递?

python api rest elasticsearch

194
推荐指数
4
解决办法
54万
查看次数

在CloudFront中动态调整图像大小并立即将它们放在同一个URL中:AWS CloudFront - > S3 - > Lambda - > CloudFront

TLDR:我们必须通过为来自Lambda函数的响应创建新的缓存行为来欺骗CloudFront 307重定向缓存.

你不会相信我们有多接近实现这一目标.我们在最后一步中陷入了沉重的困境.

商业案例:

我们的应用程序将图像存储在S3中,并使用CloudFront为其提供服务,以避免全球任何地理上的减速.现在,我们希望对设计非常灵活,并能够直接在CouldFront URL中请求新的图像尺寸!每个新的图像大小将按需创建,然后存储在S3中,因此第二次请求时,它将非常快速地提供,因为它将存在于S3中,并且还将缓存在CloudFront中.

让我们说用户上传了图像chucknorris.jpg.只有原始图像将存储在S3中,并且将在我们的页面上提供,如下所示:

//xxxxx.cloudfront.net/chucknorris.jpg

我们计算出我们现在需要显示200x200像素的缩略图.因此我们将图像src放在我们的模板中:

//xxxxx.cloudfront.net/chucknorris-200x200.jpg

当请求这个新的大小时,亚马逊网络服务必须在同一个存储桶中使用所请求的密钥即时提供.这样,图像将直接加载到CloudFront的同一URL中.

我在架构概述和工作流程中制作了一幅丑陋的图纸,介绍了我们如何在AWS中执行此操作:

在此输入图像描述

以下是Python Lambda的结束方式:

return {
    'statusCode': '301',
    'headers': {'location': redirect_url},
    'body': ''
}
Run Code Online (Sandbox Code Playgroud)

问题:

如果我们将Lambda函数重定向到S3,它就像魅力一样.如果我们重定向到CloudFront,它将进入重定向循环,因为CloudFront缓存307(以及301,302和303).只要我们的Lambda函数重定向到CloudFront,CloudFront就会调用API Getaway URL而不是从S3获取图像:

在此输入图像描述

我想在CloudFront的Behaviors设置选项卡中创建新的缓存行为.此行为不应缓存来自Lambda或S3的响应(不知道内部究竟发生了什么),但仍应将任何后续请求缓存到此相同的已调整大小的图像.我正在尝试设置路径模式-\d+x\d+\..+$,添加Lambda函数的ARN添加"Lambda函数关联"并设置事件类型Origin Response.接下来,我将"默认TTL"设置为0.

但由于一些错误,我无法保存行为:

在此输入图像描述

我们是在正确的方式,还是这个"Lambda功能协会"的想法完全不同?

caching amazon-s3 amazon-web-services amazon-cloudfront aws-lambda

19
推荐指数
1
解决办法
6632
查看次数

如何在elasticsearch中进行两个嵌套聚合?

City和home类型是以下文档映射中的两个嵌套对象:

"mappings" : {
  "home_index_doc" : {
    "properties" : {
      "city" : {
        "type" : "nested",
        "properties" : {
          "country" : {
            "type" : "nested",
            "properties" : {
              "name" : {
                "type" : "text"
              }
            }
          },
          "name" : {
            "type" : "keyword"
          }
        }
      },
      "home_type" : {
        "type" : "nested",
        "properties" : {
          "name" : {
            "type" : "keyword"
          }
        }
      },
      ...
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试进行以下聚合:获取所有当前文档并显示每个城市的所有home_types.

我想它看起来应该类似于:

"aggregations": {
  "all_cities": {
    "buckets": [
      {
        "key": "Tokyo",
         "doc_count": …
Run Code Online (Sandbox Code Playgroud)

nested aggregation elasticsearch elasticsearch-5

7
推荐指数
1
解决办法
3732
查看次数

在 Django 表单中包含 Dropzone 表单时无法进行完整的 POST

这绝对是我有史以来最致命的 5 个问题!我在 Django 中有一个工作正常的 ModelForm。问题是我想在此表单中添加一个额外的字段 - 用于图像上传的小型 Dropzone.js 区域。通过给定的代码示例,dropzone 预览 DIV 已正确嵌入到主窗体中。为了实现这一点,我当然以编程方式初始化了 Dropzone。

如果我发表评论, myDropzone.processQueue();提交按钮会将常规表单提交到视图,但不会使用 Dropzone 上传的图像。但是,如果processQueue()执行,它将覆盖主表单提交操作,并且仅提交图像。其余内容当然被忽略。

我只想在其余输入字段中提交图像,并且我想将 Dropzone 嵌入到我的 Django 表单中,因为如果我将整个表单设为 Dropzone 表单并在其中添加输入字段...整个表单将显示为拖放区域,并且造型也很乱。

为了使其更复杂,我有额外的图像数据库表,但我的视图准备额外处理请求中的图像并将它们处理到数据库。除此之外,我不得不以一种丑陋的方式在 Dropzone 中手动提供 CSRF(使用params: {..}),因为 Dropzone 无法识别表单模板引擎中的 CSRF(因为它显然是一种不同的形式):(

这是模板:

<h1 class="asdf-page-title">
    Add Type
</h1>
<form id="gift-form" class="dropzone-form" method="POST" enctype="multipart/form-data">
    {% csrf_token %}


    {{ g_form.title }}

    <p class="asdf-form-title">Select Type:</p>
    <div class="asdf-form-pic-select row collapse-outer-space ">
        {% for choice in g_form.asdf_type %}
            <div class="col-4">
                <label class="type-{{ choice.choice_label }}">
                    {{ choice.tag }}
                    <span>{% trans …
Run Code Online (Sandbox Code Playgroud)

javascript forms django post dropzone.js

5
推荐指数
1
解决办法
2446
查看次数

从完整文件路径中提取文件名及其父目录的Pythonic方法?

我们有文件的完整路径:

/dir1/dir2/dir3/sample_file.tgz
Run Code Online (Sandbox Code Playgroud)

基本上,我想以这个字符串结束:

dir3/sample_file.tgz
Run Code Online (Sandbox Code Playgroud)

我们可以用regex或解决它,.split("/")然后将列表中的最后两个项目连接起来......但我想知道我们是否可以用os.path.dirname()或类似的东西做更时尚?

python directory path

2
推荐指数
1
解决办法
1868
查看次数