我的脚本使用预先生成的数据模式按块写入文件块:
# Data pattern generator
def get_random_chunk_pattern():
return ''.join(random.choice(ascii_uppercase + digits + ascii_lowercase) for _ in range(8))
Run Code Online (Sandbox Code Playgroud)
....
# DedupChunk class CTOR:
class DedupChunk:
def __init__(self, chunk_size, chunk_pattern, chunk_position=0, state=DedupChunkStates.PENDING):
self._chunk_size = chunk_size # chunk size in bytes
self._chunk_pattern = chunk_pattern
self._chunk_position = chunk_position
self._state = state
self.mapping = None
@property
def size(self):
return self._chunk_size
@property
def pattern(self):
return self._chunk_pattern
@property
def position(self):
return self._chunk_position
@property
def state(self):
return self._state
Run Code Online (Sandbox Code Playgroud)
....
# Here Chunk object is being initialized (inside other …Run Code Online (Sandbox Code Playgroud) 我正在编写压力测试套件,用于通过NFS测试分布式文件系统。
在某些情况下,当某个进程删除文件而其他进程试图从中读取文件时,我收到“陈旧文件句柄”错误(116)。
在这种加薪条件下,这种错误是可以预期的并且可以接受的吗?
测试工作如下:
文件存在,如成功stat操作所示:
controller_debug.log.2:2016-10-26 15:02:30,156; INFO-[LG-E27A-LNX:0xa]:已完成640522b4d94c453ea545cb86568320ca,结果:成功| stat | / JUyw481MfvsBHOm1KQu7sHRB6ffAXKjwIATlsXmOgWh8XKQaIrPbxLgAo7sucdAM / o6V266xE8bTaUGzk8YDMfDAJp0YIfbT4fIK1oZ2R20tRX3xFCvjIS 数据:{} | 2016/10/26 15:02:30.156
0x1客户端上的进程CLIENT-A已成功删除:
controller_debug.log.2:2016-10-26 15:02:30,164; INFO-[CLIENT-A:0x1]:已完成5f5dfe6a06de495f851745a78857eec1,结果:成功| 删除| / JUyw481MfvsBHOm1KQu7sHRB6ffAXKjwIATlsXmOgWh8XKQaIrPbxLgAo7sucdAM / o6V266xE8bTaUGzk8YDMfDAJp0YIfbT4fIK1oZ2R20tRX3xFCvjIS 数据:{} | 2016/10/26 15:02:30.161
3毫秒后,由于“陈旧的文件句柄” 0xb,客户端上的进程CLIENT-B“读取”操作失败
controller_debug.log.2:2016-10-26 15:02:30,164; INFO-[CLIENT-B:0xb]:已完成e84e2064ead042099310af1bd44821c0,结果:失败| 阅读| /mnt/DIRSPLIT-node0.b27-1/JUyw481MfvsBHOm1KQu7sHRB6ffAXKjwIATlsXmOgWh8XKQaIrPbxLgAo7sucdAM/o6V266xE8bTaUGzk8YDMfDAJp0YIfbT4Z41 [errno:116] | 旧文件句柄| 142 | 数据:{} | 2016年10月26日15:02:30.160 controller_debug.log.2:2016年10月26日15:02:30164;错误 - 操作请仔细阅读文件JUyw481MfvsBHOm1KQu7sHRB6ffAXKjwIATlsXmOgWh8XKQaIrPbxLgAo7sucdAM / o6V266xE8bTaUGzk8YDMfDAJp0YIfbT4fIK1oZ2R20tRX3xFCvjISj7WuMEwEV41意外失败,由于过时的文件句柄
谢谢
我正在使用python的内置sqlite3 DB模块。
在将对象插入数据库表时,sqlite引发以下异常:
"PRIMARY KEY must be unique"
Run Code Online (Sandbox Code Playgroud)
由于每个对象有不同的插入方法,因此我无法确定它在哪个表中失败:
import sqlite3
...
class SomeObject1:
....
def _insert_some_object1(self, db_object):
self._cursor.execute('insert into %s values (?,?,?)' % TABLE_NAME,
(db_oject.v1, db_object.v2, db_object_v3,))
Run Code Online (Sandbox Code Playgroud)
异常碰上main()通过except Exception as e:,所以才信息,我已经得到了。
我想知道在哪个表中插入失败,值失败,等等。
从sqlite异常中获取最多信息的正确方法是什么?
谢谢
目前--resize我创建的标志是boolean,意味着我的所有对象都将被调整大小:
parser.add_argument("--resize", action="store_true", help="Do dictionary resize")
# ...
# if resize flag is true I'm re-sizing all objects
if args.resize:
for object in my_obects:
object.do_resize()
Run Code Online (Sandbox Code Playgroud)
有没有办法实现argparse参数,如果传递为boolean flag(--resize)将返回true,但如果传递value(--resize 10),将包含值.
例:
python ./my_script.py --resize # Will contain True that means, resize all the objectspython ./my_script.py --resize <index> # Will contain index, that means resize only specific object