小编mRc*_*ing的帖子

如何使用flask restplus验证POST有效负载中的日期类型?

考虑以下:

from flask import Flask
from flask_restplus import Api, Resource, fields

app = Flask(__name__)
api = Api(app)
ns = api.namespace('ns')

payload = api.model('Payload', {
    'a_str': fields.String(required=True),
    'a_date': fields.Date(required=True)
})

@ns.route('/')
class AResource(Resource):

    @ns.expect(payload)
    def post(self):
        pass
Run Code Online (Sandbox Code Playgroud)

如果我发布,{"a_str": 0, "a_date": "2000-01-01"}我会按预期得到 400,因为a_str不是字符串。但是,当我 POST 时,我{"a_str": "str", "a_date": "asd"}没有得到 400。在这里我也想得到 400,因为“asd”不是常见的日期格式。

我查看了Date文档,发现有format一个parse方法可以检查字符串是否采用通用日期格式。但是,这里似乎没有调用它们。

有没有另一种方法可以做到这一点?目前我正在手动验证日期格式,但似乎 fask restplus 应该能够为我完成。

python post payload flask flask-restplus

6
推荐指数
1
解决办法
5336
查看次数

Bookdown:设置分页符

我无法找到如何在R bookdown中分页.分页符我的意思是一页内的内容显示为一个网站.

默认情况下,每个新部分前面都有一个分页符(如# Chapter 1).所以,如果我运行render_book每个部分就变成一个html文件.但是,如果我有很多小节,那么这些网站会变得很长.

我想在每个小节之前都有分页符(比如## Chapter 1.1).

到目前为止,我尝试添加\newpage,\pagebreak,---------------到.Rmd或仅提供在相同结构的.Rmd文件,我想有他们作为.html文件.无论哪种方式,.html文件总是根据部分创建.

r bookdown

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

在docker-compose中到达flask应用程序的问题

另一个码头工人/烧瓶问题。我在从另一个容器连接到我的 Flask 应用程序时遇到问题docker-compose

我的dockerfile设置了一个烧瓶应用程序,如:

COPY ./ /app/

WORKDIR /app

RUN find -name "*.pyc" -delete && \
    pip3 install -r requirements.txt

EXPOSE 5000

CMD ["python3", "app.py"]
Run Code Online (Sandbox Code Playgroud)

该应用程序在 上运行0.0.0.0:5000docker-compose.yml如下所示:

version: '3'

services:

  app:
    build: .
    ports:
      - "5000:5000"

  test:
    image: alpine:3.8
Run Code Online (Sandbox Code Playgroud)

现在docker-compose up我可以curl从主机上像:

curl -i http://0.0.0.0:5000
...
200 - ok
Run Code Online (Sandbox Code Playgroud)

但是如果我跳进测试容器,我会得到一个 404:

docker-compose run test sh
# apk --update add curl
# curl -i http://app:5000
...
404 - not found …
Run Code Online (Sandbox Code Playgroud)

flask docker docker-compose

3
推荐指数
1
解决办法
1045
查看次数

有没有办法将参数传递给 optuna 中的多个作业?

我正在尝试使用 optuna 来搜索超参数空间。

在一个特定场景中,我在具有几个 GPU 的机器上训练模型。模型和批量大小允许我每 1 个 GPU 运行 1 次训练。因此,理想情况下,我希望 optuna 将所有试验分布在可用的 GPU 上,以便在每个 GPU 上始终运行 1 个试验。

在它说的文档中,我应该在一个单独的终端中为每个 GPU 启动一个进程,例如:

CUDA_VISIBLE_DEVICES=0 optuna study optimize foo.py objective --study foo --storage sqlite:///example.db
Run Code Online (Sandbox Code Playgroud)

我想避免这种情况,因为之后整个超参数搜索会在多轮中继续进行。我不想总是为每个 GPU 手动启动一个进程,检查所有进程何时完成,然后开始下一轮。

我看到study.optimizen_jobs争论。乍一看,这似乎是完美的。 例如我可以这样做:

import optuna

def objective(trial):
    # the actual model would be trained here
    # the trainer here would need to know which GPU
    # it should be using
    best_val_loss = trainer(**trial.params)
    return best_val_loss

study = optuna.create_study() …
Run Code Online (Sandbox Code Playgroud)

python multithreading gpu optuna

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