小编Rig*_*reM的帖子

Docker 容器的 sshfs 挂载冻结,但仅当由 Python 挂载时

我有一台开发笔记本电脑 ( Mint 19.3) 和一台测试服务器 ( Ubuntu 18.04.4 LTS)。

笔记本电脑是 Docker version 19.03.5, build 633a0ea838,服务器是 Dockerversion 19.03.12, build 48a66213fe

我在容器内运行 Python 3.6 代码,它使用subprocess(下面的代码)创建到第三台服务器的 sshfs 挂载,之后 python 代码遍历挂载的目录。

在我的开发笔记本电脑上一切正常。但是在服务器上,目录会挂载(并且可以通过mount命令看到),但是 cd 进入目录只是挂起,而 Python 代码的后续walk只是挂起。(注意:python 代码永远不会崩溃或出错。它只是永远挂起。)

但是,如果我在容器的命令行中手动使用相同的 sshfs 命令,则该目录可以正常工作。

我不知道如何解决这个问题。

===2020-09-25 更新===

好的。由于 Python 代码使用子进程,sshfs 挂载显然可用于任何想要使用它的终端窗口。

我尝试从容器内的新终端窗口访问安装,但是当我 cd 到安装时 - 窗口只是冻结。

好吧,我把所有东西都搁置了一夜——现在当我尝试 cd 进入安装时......它起作用了。这就像坐骑必须坐几个小时才能工作。

有任何想法吗?

Python代码

@target_dir.setter    
def target_dir(self, value):
    if value is None:
        _tmp = tempfile.mkdtemp()
        self._TARGETDIR = _tmp

    else:
        self._TARGETDIR …
Run Code Online (Sandbox Code Playgroud)

containers sshfs python-3.x docker

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

由于双主键,无法映射ForeignKey

我正在尝试从现有数据中即时创建表格...但是,我需要的表格具有双主键.我找不到如何满足这些限制.

即我从以下两个表开始......

self.DDB_PAT_BASE = Table('DDB_PAT_BASE', METADATA, 
    Column('PATID', INTEGER(), primary_key=True),
    Column('PATDB', INTEGER(), primary_key=True),
    Column('FAMILYID', INTEGER()),
)

self.DDB_ERX_MEDICATION_BASE = Table('DDB_ERX_MEDICATION_BASE', METADATA, 
    Column('ErxID', INTEGER(), primary_key=True),
    Column('ErxGuid', VARCHAR(length=36)),
    Column('LastDownload', DATETIME()),
    Column('LastUpload', DATETIME()),
    Column('Source', INTEGER()),
    )
Run Code Online (Sandbox Code Playgroud)

当我尝试以下内容时,它有效......

t = Table('testtable', METADATA,
    Column('ErxID', INTEGER(), ForeignKey('DDB_ERX_MEDICATION_BASE.ErxID')),
    )     
t.create()
Run Code Online (Sandbox Code Playgroud)

但是,以下两个都给我错误...

t = Table('testtable', METADATA,
    Column('PATID', INTEGER(), ForeignKey('DDB_PAT_BASE.PATID')),
)
t.create()

t = Table('testtable', METADATA,
    Column('PATID', INTEGER(), ForeignKey('DDB_PAT_BASE.PATID')),
    Column('PATDB', INTEGER(), ForeignKey('DDB_PAT_BASE.PATDB')),
)
t.create()
Run Code Online (Sandbox Code Playgroud)


sqlalchemy.exc.OperationalError: (pymssql.OperationalError) (1776, "There are no primary or candidate keys in the referenced table 'DDB_PAT_BASE' that match …
Run Code Online (Sandbox Code Playgroud)

python sql-server sqlalchemy pymssql

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

可以在不使用echo或全局变量的情况下从Bash函数返回字符串吗?

我在工作中回到了很多Bash脚本,我生锈了.

有没有办法从函数返回本地值字符串而不使其全局或使用echo?我希望函数能够通过屏幕与用户交互,但也可以将返回值传递给变量而不需要像export return_value="return string".printf命令似乎完全像echo一样响应.

例如:

function myfunc() {
    [somecommand] "This appears only on the screen"
    echo "Return string"
}

# return_value=$(myfunc)
This appears only on the screen

# echo $return_value
Return string
Run Code Online (Sandbox Code Playgroud)

bash interactive return function echo

5
推荐指数
3
解决办法
3557
查看次数

":","@"与python docstrings中没有任何区别

我只是想更好地感受Python文档字符串的布局(之间""" """)

我见过不同布局的docstrings ......比如...

"""
@DESCRIPTION
Ive seen tags STARTING with an at-sign

:DESCRIPTION:
Tags with colons

DESCRIPTION
And tags with nothing

"""
Run Code Online (Sandbox Code Playgroud)

这些都有功能吗?是@用药剂关联?或者这些只是开发者之间的偏好?我查看了docstrings的样式指南,但看不到它在哪里解决这些问题......

谢谢!

documentation formatting docstring python-elixir

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

旋转PIL图像似乎没有旋转画布(没有添加TKinter画布)

旋转我创建的图像时遇到问题.因为代码分布在许多方法中,所以我把我认为的相关命令放在下面.

问题是,当图像成功创建时,当我使用img.rotate(-90)旋转它时...图像旋转,但托盘/背景/画布看起来没有(参见附图).

我怎么能纠正这个.我是否需要创建更大的透明背景?我可以让背景/画布也旋转......还是旋转然后调整背景/画布的大小?

第一个示例图像(QRCODE)

img = Image.new('RGB', (x,y), 'white')
qr = qrcode.QRCode(version=1,error_correction=qrcode.constants.ERROR_CORRECT_L,box_size=10,border=1,)
qr.add_data('QRB.NO/AbCd1')
qr.make(fit=True)
QRimg = qr.make_image()
img = img.paste(QRimg, (x,y))
img.show() #333
raw_input('(Above is unrotated QRcode image) Press enter...') #333
img = img.rotate(-90)
print img, type(img)
img.show() #333
raw_input('Above is the rotated -90 QRcode image. Press enter...') #333
Run Code Online (Sandbox Code Playgroud)

第二个例子图像

font_name      = 'Arial.ttf'
font_size      = 16 
font = ImageFont.truetype(font_name, font_size)
img = Image.new('RGB', (x,y), color=background_color)
# Place text 
draw = ImageDraw.Draw(img)
draw.text( (corner_X,corner_Y), 'QRB.NO/AbCd1', font=font, fill='#000000' ) 
draw.rectangle((0,0,x-1,y-1), outline = …
Run Code Online (Sandbox Code Playgroud)

python image-processing rotation python-imaging-library

5
推荐指数
2
解决办法
2368
查看次数

一种覆盖'type()'报告的方法

有没有办法改变CLASS OBJECT以type(object)报告自定义字符串?

class MyClass(object):
    def __init__(self, t):
        if 'detector' in t:
            my_type_string = "I am set as a detector."
        else:
            my_type_string = "I am set as a broadcaster."

>>> o = MyClass('detector')
>>> type(o)
I am set as a detector.
Run Code Online (Sandbox Code Playgroud)

python string casting class repr

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

__del__是不可靠的,但如果我尝试使用上下文管理器,则该对象不会持久存在

我有一个脚本,实例化了许多子对象.当脚本(和这些对象)结束时......对象需要做一些清理(尤其是临时文件关闭和删除).

我一直在阅读如何__del__不可靠 - 但是上下文管理似乎不起作用,子对象不会持久.他们需要四处闲逛(做文件读写等事情)

一个例子:

WRITER.PY

import os

class Writer(object):
    def __init__(self, filename):
        self.filename = filename
        self.open()

    def open(self):
        self.fh = open(self.filename, "w+", 0)

    def write(self, msg):
        print >>self.fh, str(msg)

    def close(self):
        self.fh.close()
        os.remove(self.filename)

    def __enter__(self):
        print "entered"
#         self.open()


    def __exit__(self, type, value, traceback):
        print "__exit__"
        self.close()
Run Code Online (Sandbox Code Playgroud)

MAIN.PY

def myfunc(filename):
    with WRITER.Writer(filename) as writeit:
        # do some stuff
        writeit.write("hallo")
        # do some more stuff
        writeit.write("more results")
        # even more stuff
        writeit.write("goodbye")
Run Code Online (Sandbox Code Playgroud)

但是当我运行时myfunc(),对象一旦完成就会被垃圾收集__init__().它直接从enter到exit并且在with语句之后不执行任何任务.如果我把开放放入__init__ …

python with-statement del resource-cleanup contextmanager

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

使用现有的 winston 记录器

我是Node.jsJavascript 的新手,所以我仍在学习详细信息。我来自 python 背景。

我有一个可导入的函数,它创建一个记录器,并将日志对象传递回main脚本。

我正在将其他模块导入main脚本,并且我希望它们使用相同的日志记录对象/设置。

在 Python 中,记录器对象是一个单例,当从下标或导入的方法再次实例化时,它将获取所有现有的传输。

这也可以在 JS 中完成,而不必只是将logger对象作为函数的参数传入?

记录器.js

const { createLogger, transports } = require("winston");
let   { format }                   = require("winston");
let logger;
let log_level;
let logfile; 
let screendump;

function formatParams(info) { (...snip...) }

//Set format default here
format = format.combine( ...snip ...);

module.exports = {
    set: function (argv) { // defaults
        /* Set logging. Can be set by command line or config file */
        var log_level …
Run Code Online (Sandbox Code Playgroud)

javascript import logging node.js winston

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