現在、Django の Celery タスクとしてファイルをローカル ディスクから UNC パス経由で別のマシンに転送しようとしていますが、かなりの数のロード ブロックに遭遇しました。
独立したスクリプトで正常に動作する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 を使用しています。
これについて何か助けていただければ幸いです。