小编sca*_*one的帖子

即使作为 docker 容器内的 root,权限也被拒绝

尝试以 root 身份连接到正在运行的 docker 容器时,仍然会出现“操作不允许”错误apt-get update,但我仍然可以看到敏感文件,例如/etc/passwd. 以下是我的配置以及来自的错误消息apt-get update。我的主机操作系统是Ubuntu 18.04.3. 我的docker版本是Docker version 19.03.5, build 633a0ea838

我使用以下 Dockerfile 创建一个容器

FROM python:3.8-slim-buster
RUN useradd -ms /bin/bash andrej
WORKDIR /home/andrej
COPY . /home/andrej/

RUN apt-get update && \
    apt-get install -y gcc && \
    pip install -r requirements.txt && \
    apt-get remove -y gcc && apt-get -y autoremove

RUN chown andrej:andrej pycurl && \
    chmod 0744 pycurl

USER andrej
ENTRYPOINT ["uwsgi"]
CMD ["--ini", "uwsgi.ini"]

Run Code Online (Sandbox Code Playgroud)

使用 …

permissions docker docker-compose ubuntu-18.04 debian-buster

10
推荐指数
2
解决办法
4万
查看次数

SQLAlchemy 对关联表的多对多关系发出警告

我收到此警告:

sqlalchemy/orm/relationships.py:3447:SAWarning:关系“Group.members”会将列 group.id 复制到列 user_group.group_id,这与关系冲突:“BuiltinUser.groups”(将 group.id 复制到 user_group .group_id)。如果这不是目的,请考虑这些关系是否应与 back_populates 链接,或者如果它们是只读的,是否应将 viewonly=True 应用于一个或多个关系。对于不太常见的外键约束部分重叠的情况,可以使用 orm.foreign() 注释来隔离应写入的列。'overlaps' 参数可用于消除此警告。

这让我觉得我在关系定义上犯了一个错误。它是通过辅助(关联表)指定的多对多关系。下面是工作脚本/定义,会产生不需要的警告。使用 SQLAlchemy 版本 1.4.0b1 和 python 3.6.8

import attr
import uuid
import asyncio
from typing import List

from sqlalchemy.future import select
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
from sqlalchemy.orm import registry, relationship
from sqlalchemy import (
    Table, MetaData, Column, Integer, String,
    ForeignKey, Boolean,
)


meta = MetaData()
mapper_registry = registry()

user_table = Table(
    "user",
    meta,
    Column("id", String, primary_key=True),
    Column("username", String(20), unique=True, nullable=False),
)

group_table = …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

10
推荐指数
1
解决办法
6796
查看次数

从另一个装饰器创建装饰器(python)

在花了几个小时讨论 python 中的装饰器主题之后,我仍然有两个问题。

第一的; 如果你有没有参数的装饰器,那么 sytntax 是这样的:

@decorator
def bye():
    return "bye"
Run Code Online (Sandbox Code Playgroud)

这只是一个语法糖,与此相同

bye = decorator(bye)
Run Code Online (Sandbox Code Playgroud)

但如果我有一个带有参数的装饰器:

@decorator(*args)
def bye():
    return "bye"
Run Code Online (Sandbox Code Playgroud)

“无糖”版本怎么样?该函数是否作为参数之一传递到内部?

bye = decorator("argument", bye)
Run Code Online (Sandbox Code Playgroud)

第二个问题(与第一个问题相关,但更实际的例子);

def permission_required(permission):
    def wrap(function):
        @functools.wraps(function)
            def wrapped_func(*args, **kwargs):
                if not current_user.can(permission):
                    abort(403)
                return function(*args, **kwargs)
            return wrapped_function
    return wrap

def admin_required(f):
    return permission_required(Permission.ADMINISTER)(f)
Run Code Online (Sandbox Code Playgroud)

这里,permission_required装饰器被传递给新创建的名为admin_required的装饰器的 return 语句。我不知道这是如何运作的。主要是 return 语句,我们返回原始装饰器+函数(以奇怪的语法)。有人可以详细说明一下吗?- 非常欢迎详细信息

python python-3.x python-decorators

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

我可以用变量修改NetLogo命令吗?

示例开始:

to make-new-car [freq x y head ] if (random-float 100 < freq) and not any? turtles-on patch x y [ create-cars 1 [ setxy x y set heading head set color one-of base-colors ] ] end

但是我希望有更多的汽车品种 - 而不仅仅是一个汽车品种.我也希望保持简单并且做到这一点(第一个功能与上面的相同):

to make-new-car [freq x y head ] if (random-float 100 < freq) and not any? turtles-on patch x y [ create-cars 1 [ setxy x y set heading head set color one-of base-colors ] ] end …

netlogo

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

正确模拟另一个芹菜任务中正在调用的芹菜任务

如何正确模拟在另一个芹菜任务中调用的芹菜任务?(下面的虚拟代码)

@app.task
def task1(smthg):
    do_so_basic_stuff_1
    do_so_basic_stuff_2
    other_thing(smthg)

@app.task
def task2(smthg):
    if condition:
        task1.delay(smthg[1])
    else:
        task1.delay(smthg)
Run Code Online (Sandbox Code Playgroud)

我在my_module中确实具有完全相同的代码结构。proj / cel / my_module.py我正在尝试在proj / tests / cel_test / test.py中编写测试

测试功能:

def test_this_thing(self):
    # firs I want to mock task1
    # i've tried to import it from my_module.py to test.py and then mock it from test.py namespace 
    # i've tried to import it from my_module.py and mock it
    # nothing worked for me

    # what I basically want to do 
    # mock task1 here …
Run Code Online (Sandbox Code Playgroud)

python mocking python-2.7

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

如果不正确或单击任务选项,则显示帮助

当我将无效参数放入命令时,仅显示以下内容:

Usage: ugen.py [OPTIONS]

Error: Missing option "-o" / "--out_file".
Run Code Online (Sandbox Code Playgroud)

想像 --help选项一样显示整个帮助消息

我的装饰功能:

@click.command(name="ugen")
@click.help_option("-h", "--help")
@click.option(
    "-o", "--out_file",
    help="Output file where data is written.",
    required=True
)
@click.option(
    "-i", "--in_file", multiple=True,
    help=(
        "Input file/s from which data is read. "
        "Can be provided multiple times. "
        "Although always with specifier -i/--in_file."
    ),
    required=True
)
def main(out_file, in_file):
    code here
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-click

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