我正在尝试通过UNC路径将文件作为Django上的Celery任务从本地磁盘传输到另一台机器,我遇到了很多路障。
我使用了一个名为win_unc的软件包,它在一个独立的脚本中运行良好。但是,当我使用相同的代码作为芹菜任务时,我遇到以下错误:
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\celery\task\trace.py", line 228, in trace_task
R = retval = fun(*args, **kwargs)
File "C:\Python27\lib\site-packages\celery\task\trace.py", line 415, in __protected_call__
return self.run(*args, **kwargs)
File "Path\to\file\file.py", line 96, in movefile
conn.mount()
File "C:\Python27\lib\site-packages\win_unc\connecting.py", line 163, in mount
self.connect()
File "C:\Python27\lib\site-packages\win_unc\connecting.py", line 63, in connect
self._connect_with_creds(self.get_username(), self.get_password())
File "C:\Python27\lib\site-packages\win_unc\connecting.py", line 118, in _connect_with_creds
run(command)
File "C:\Python27\lib\site-packages\win_unc\internal\shell.py", line 29, in run
raise ShellCommandError(command, process.returncode)
ShellCommandError: The command `NET USE "Y:" "\\UNC\path" /PERSISTENT:NO` exited with error code 2.
我用来移动文件的其他模块是os和shutil。
我使用shutil将文件复制到UNC目的地并收到以下错误:
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\celery\task\trace.py", line 228, in trace_task
R = retval = fun(*args, **kwargs)
File "C:\Python27\lib\site-packages\celery\task\trace.py", line 415, in __protected_call__
return self.run(*args, **kwargs)
File "Path\to\file\file.py", line 96, in movefile
shutil.copy(source.strip(), dest.strip())
File "C:\Python27\lib\shutil.py", line 117, in copy
copyfile(src, dst)
File "C:\Python27\lib\shutil.py", line 83, in copyfile
with open(dst, 'wb') as fdst:
IOError: [Errno 22] invalid mode ('wb') or filename: '\\\\UNC\\path\\somefile.csv'
这是os.rename的错误
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\celery\task\trace.py", line 228, in trace_task
R = retval = fun(*args, **kwargs)
File "C:\Python27\lib\site-packages\celery\task\trace.py", line 415, in __protected_call__
return self.run(*args, **kwargs)
File "Path\to\file\file.py", line 95, in movefile
os.rename(source, dest)
WindowsError: [Error 1326] Logon failure: unknown user name or bad password
当我使用独立的python脚本移动文件时,以上所有工作都很好。这也适用于python命令行。我不明白为什么它作为Celery任务失败或者是否有任何其他原因。
我使用Python 2.7.3和Django 1.4.2。
我真的很感激任何帮助。