0

現在、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 を使用しています。

これについて何か助けていただければ幸いです。

4

0 に答える 0