在网络上并发运行python脚本。这样可以吗?

2024-09-30 22:12:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我们在网络驱动器上有一个python脚本+相关模块。我们同时从多台计算机上运行这个脚本。在

有时其中一个随机失败,错误如下:

Traceback (most recent call last):
  File "\\chifs02.int.tt.local\group\Development\Server Products\Automation\repos\mksutils\fetch.py", line 16, in <module>
    from scripts import write_set_environment
NameError: Can't find file for module scripts
(filename \\chifs02.int.tt.local\group\Development\Server Products\Automation\repos\mksutils\scripts.pyc)

我注意到的一个奇怪之处是.py文件最后一次修改是在几个月前,但是.pyc只有几个小时的历史,尽管从那时起至少每天都在运行。在

我以前从未见过这个NameError: Can't find file for module scripts错误,而且Google也帮不上什么忙。在

所有涉及的计算机都在运行Windows。在


Tags: 脚本serverlocal错误groupscriptsreposint
2条回答

不要这样做,这里的“that”是指有多台计算机尝试使用同一个.pyc(s)。在

修改pyc的可能原因是在不同的计算机上可能有稍微不同的Python版本。一个编写它的.pyc版本,另一个出现时发现它不是它所期望的,并编写自己的版本。在

当不同的计算机同时尝试处理相同的.pyc文件时,奇怪的错误是可能的,这一点也不会让我感到惊讶。这是一个竞争条件的邀请,因为没有使用锁定机制。在

在运行脚本之前,让每个系统将脚本复制到本地,或者禁用.pyc生成(-B命令行标志或设置PYTHONDONTWRITEBYTECODE环境变量)。在

这是个奇怪的错误(我在野外从未见过)。在

我的假设是,它与一个节点重新生成pyc文件有关,而另一个节点试图查看它。尝试删除pyc文件并在Python命令行上指定-B

-B     : don't write .py[co] files on import; also PYTHONDONTWRITEBYTECODE=x

相关问题 更多 >