0

我目前正在尝试通过 UNC 路径将文件作为 Django 上的 Celery 任务从本地磁盘传输到另一台机器,但我遇到了很多障碍。

我使用了一个名为win_unc的包,它在独立脚本中运行良好。但是,当我使用与 celery 任务相同的代码时,我遇到了以下错误:

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。

我真的很感激这方面的任何帮助。

4

0 回答 0