在Celery任务中使用UNC目标路径移动文件

时间:2013-06-18 12:01:37

标签: python django celery shutil

我正在尝试通过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。

我真的很感激任何帮助。

0 个答案:

没有答案