possível bloquear o arquivo sqlite no sistema de arquivos NF
Digamos que existem dois scripts python que desejam gravar dados na mesma tabela que são armazenados em um arquivo SQLite usando osqlite3
module. O arquivo SQLite é armazenado em um sistema de arquivos NFS. No SQLite-FAQ Eu leio
@SQLite usa bloqueios de leitor / gravador para controlar o acesso ao banco de dados. [...] Mas tenha cuidado: esse mecanismo de bloqueio pode não funcionar corretamente se o arquivo de banco de dados for mantido em um sistema de arquivos NFS. Isso ocorre porque o bloqueio do arquivo fcntl () é interrompido em muitas implementações do NFS. Você deve evitar colocar arquivos de banco de dados SQLite no NFS se vários processos tentarem acessar o arquivo ao mesmo temp
Isso significa que não é possível ou existe alguma maneira de garantir que um processo aguarde até que o outro seja concluíd
Os INSERTs não são complexos. Apenas algum
INSERT_STATEMENT = "INSERT INTO some_table (row, col, val) VALUES (?, ?, ?)"
connection.executemany(INSERT_STATEMENT, triples)
E os conjuntos inseridos são separado
Uma pergunta adicional: Os problemas do NFS ocorrem quando dois processos tentam gravar na mesma tabela ou quando tentam gravar no mesmo banco de dados (que é um arquivo)? Seria uma solução alternativa permitir que cada processo crie sua própria tabela no mesmo banco de dados (arquivo) e escreva para isso?