小编sob*_*evn的帖子

Phoenix的scrub_params是否像Rails一样强大的参数?

Phoenix scrub_params方法的文档对我来说有点不清楚.看起来这个功能类似于Rails强参数功能.但是,当你在像这样的控制器中使用它时,

plug :scrub_params, "user" when action in [:create]
Run Code Online (Sandbox Code Playgroud)

...您没有明确说明要将哪些参数列入白名单.我已经查看了代码scrub_params,但是我对Elixir的说法非常苛刻,我不太确定发生了什么.

此方法只是查看模型并使用必需和可选的字段模块属性来列入白名单参数吗?

此外,scrub_params文档说"检查required_key是否存在".什么是"必需的钥匙"?这只是模型中的必填字段吗?

ruby-on-rails elixir ecto phoenix-framework

25
推荐指数
1
解决办法
5477
查看次数

字符串包含"%s"而不转义时的Python字符串格式

格式化字符串时,我的字符串可能包含"%"我不希望转换的模数.我可以逃避串和每一个变化"%",以"%%"作为一种变通方法.

例如,

'Day old bread, 50%% sale %s' % 'today!'  
Run Code Online (Sandbox Code Playgroud)

输出:

'Day old bread, 50% sale today'
Run Code Online (Sandbox Code Playgroud)

但有逃避的替代方案吗?我希望使用dict可以使Python忽略任何非关键字转换.
例如,

'Day old bread, 50% sale %(when)s' % {'when': 'today'}  
Run Code Online (Sandbox Code Playgroud)

但Python仍然看到第一个模数,%并给出一个:

TypeError: not enough arguments for format string
Run Code Online (Sandbox Code Playgroud)

python string-formatting

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

没有--net = host参数的docker容器内的网络无法访问

问题:docker容器中没有Internet连接.

症状:ping 8.8.8.8不起作用.来自主机系统的Wireshark回馈:

 19 10.866212113   172.17.0.2 -> 8.8.8.8      ICMP 98 Echo (ping) request  id=0x0009, seq=0/0, ttl=64
 20 11.867231972   172.17.0.2 -> 8.8.8.8      ICMP 98 Echo (ping) request  id=0x0009, seq=1/256, ttl=64
 21 12.868331353   172.17.0.2 -> 8.8.8.8      ICMP 98 Echo (ping) request  id=0x0009, seq=2/512, ttl=64
 22 13.869400083   172.17.0.2 -> 8.8.8.8      ICMP 98 Echo (ping) request  id=0x0009, seq=3/768, ttl=64
Run Code Online (Sandbox Code Playgroud)

但是!如果容器启动与--net=host互联网将完美.

到目前为止我尝试过的:

  • 改变DNS
  • 添加--ip-masq=true/etc/default/docker(重启关闭)
  • 启用与masquerade/ip_forward相关的所有内容
  • 改变默认路线
  • 这里建议的一切

主机配置:

$ sudo route
Kernel IP routing …
Run Code Online (Sandbox Code Playgroud)

networking iptables docker

14
推荐指数
2
解决办法
8961
查看次数

将Python诗歌与Docker集成

你能给我一个Dockerfile的例子,我可以在其中将poetry.lock和pyproject.toml所需的所有软件包安装到Docker的图像/容器中吗?

python docker dockerfile python-poetry

14
推荐指数
12
解决办法
4612
查看次数

mypy django Rest Framework - 使用多个权限类时不支持左操作数类型

我正在将 mypy 集成到现有的代码库上(使用 django、drf 框架)。

view.py 中的示例代码:

from rest_framework.permissions import IsAdminUser, IsAuthenticatedOrReadOnly

@api_view()
@permission_classes([IsAuthenticatedOrReadOnly | IsAdminUser])
def listAbc(request):
    queryset = ...
    serializer = ...
    return Response(serializer.data)
Run Code Online (Sandbox Code Playgroud)

结果:

$ mypy
error: Unsupported left operand type for | ("Type[IsAuthenticatedOrReadOnly]")
Run Code Online (Sandbox Code Playgroud)

使用的插件:

$ pip list | grep stubs
django-stubs                    1.2.0
djangorestframework-stubs       1.0.0
Run Code Online (Sandbox Code Playgroud)

mypy 配置文件(mypy.ini):

[mypy]

plugins =
    mypy_django_plugin.main, mypy_drf_plugin.main

;ignore_missing_imports = True
files=**/*.py

[mypy-*.migrations.*]
ignore_errors = True

[mypy.plugins.django-stubs]
django_settings_module = project.settings
Run Code Online (Sandbox Code Playgroud)

使用 mypy(0.720 和 0.740)进行检查。

这里可能有什么问题?由于操作'|' mypy 无法识别,我怀疑在 mypy 评估期间未添加元类 BasePermissionMetaclass (包含操作) BasePermission。我认为只需安装 djangorestframework-stubs …

python django mypy typeshed django-stubs

11
推荐指数
1
解决办法
963
查看次数

在travis-ci中跳过第一个mvn安装

因为travis自动运行,我在使用travis-ci上的maven构建项目时遇到了麻烦

mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V
Run Code Online (Sandbox Code Playgroud)

由于超时而失败:

No output has been received in the last 10 minutes, this potentially
indicates a stalled build or something wrong with the build itself
Run Code Online (Sandbox Code Playgroud)

根据文档我应该能够覆盖它定义自定义脚本,.travis.yml但它不起作用,这里我的配置:

  sudo: false
  language:
    - java
  script: "travis_wait mvn -T4 -pl quickfixj-codegenerator install"
  jdk:
    - oraclejdk8
  env:
    - MAVEN_OPTS="-Xms2048m -Xmx=2048m"
  branches:
    only:
      - travis-ci-build
Run Code Online (Sandbox Code Playgroud)

有没有办法避免自动mvn安装或调整它?

travis-ci

9
推荐指数
3
解决办法
2237
查看次数

Gunicorn在多处理过程和工人之间共享内存

我有一个python应用程序,它使用字典作为多个进程之间的共享内存:

from multiprocessing import Manager
manager = Manager()
shared_dict = manager.dict()
Run Code Online (Sandbox Code Playgroud)

REST API使用Flask实现.使用pywsgi或简单地使用Flask.run初始化Flask服务器时,一切正常.我决定投入混合炮.现在,当我从任何工作者访问此共享字典时(即使只有一个正在运行),我收到错误:

message = connection.recv_bytes(256)#deput large message
IOError:[Errno 35]资源暂时不可用

我一直在研究mmap,多处理监听器和客户端,它们看起来都是很多开销.

python multiprocessing gunicorn

8
推荐指数
1
解决办法
1676
查看次数

在scikit-image中导入相对/绝对函数时出现问题

我正在尝试为scikit-image 提交PR,但我收到Travis-CI 错误:

  Traceback (most recent call last):
  File "doc/examples/edges/plot_canny.py", line 22, in <module>
    from skimage import feature
  File "/home/travis/build/scikit-image/scikit-image/skimage/feature/__init__.py", line 9, in <module>
    from .peak import peak_local_max
  File "/home/travis/build/scikit-image/scikit-image/skimage/feature/peak.py", line 3, in <module>
    from ..filters import rank_order
  File "/home/travis/build/scikit-image/scikit-image/skimage/filters/__init__.py", line 11, in <module>
    from ._frangi import frangi_filter, hessian_filter
  File "/home/travis/build/scikit-image/scikit-image/skimage/filters/_frangi.py", line 2, in <module>
    from skimage.feature import hessian_matrix, hessian_matrix_eigvals
ImportError: cannot import name hessian_matrix
Run Code Online (Sandbox Code Playgroud)

我想这可能是一个循环导入错误,但我不知道如何解决这个问题.我已经包含 frangi_filterhessian_filter进入过滤器的模块__init__.py.

我也尝试了相对导入,导致 …

python scikit-image

8
推荐指数
1
解决办法
306
查看次数

python-requests和django - CSRF验证失败.请求中止

我有一个django服务器上传文件,当我使用浏览器时,我可以毫无问题地上传文件.

但是,如果我使用python-requests命令,它会告诉我CSRF验证失败.请求中止.python请求代码如下:

    #upload via HTTP
    file = {"docfile": open(fullfilename, "rb")}
    s = requests.Session()
    r = s.get(dhost)
    r = s.post(dhost, files=file)
Run Code Online (Sandbox Code Playgroud)

如果我执行我的代码,我得到代码403并且错误CSRF验证失败.请求中止.失败原因:CSRF令牌丢失或不正确.

但是,如果我查看我发送的标题,我会设置cookie:

CaseInsensitiveDict({'Content-Length': u'84169', 
'Accept-Encoding': 'gzip, deflate, compress', 
'Accept': '*/*', 
'User-Agent': 'python-requests/2.0.1 CPython/2.7.3 Linux/3.6.11+', 
'Cookie': 'csrftoken=GOOIsG89i5oMCJO6594algTXooxoUeoL', 
'Content-Type': 'multipart/form-data; boundary=86ada00b4f6c41d5997293cce7a53b6b'})
Run Code Online (Sandbox Code Playgroud)

你能否告诉我应该做些什么才能让它发挥作用?

谢谢,

约翰.

python django

6
推荐指数
2
解决办法
6054
查看次数