0
私は、サードパーティ(ない鉱山)のサーバーに複数のファイルをアップロードします。GAEとgoogle.appengine.runtime.DeadlineExceededError
for argument in files_arguments:
files_counter +=1
file_size = len(self.request.get(argument))/(1024.0*1024.0)
if file_size <= 1:
files.append(MultipartParam('file1', self.request.get(argument), 'file'+str(files_counter)+'.jpg', 'application/x-www-form-urlencoded'))
# sending file
data, headers = multipart_encode(files)
# try 3 times to send the file
for i in range(3):
try:
result = urlfetch.fetch(url=self.request.get('upload_url'),
payload=''.join(data),
method=urlfetch.POST,
headers=headers,
deadline=10
)
break
except DownloadError:
logging.error('(POST) ... DownloadError during file upload, attempt ' + str(i))
pass
except DeadlineExceededError:
logging.error('(POST) ... DeadlineExceededError during file upload, attempt ' + str(i))
pass
if result.status_code == 200:
及び〜10日のファイルに私はそのDeadlineExceededErrorを取得しています。 これを避けるにはどうすればよいですか?
また、非同期URLFetch APIを調べると、複数のアップロードを同時に行うことができます。 –
@Chris Farmiloe、私の場合はどのようにタスクを使用するかわかりません。現在私は次のことを行います - ファイルをアップロードし、結果データを保存し(サーバーはファイル固有のIDを持つjsonを返します)、memcacheにすべてのファイルがアップロードされたら、一意のIDを渡した別のURLを開きます。このユニークなIDに基づいて、私はmemcacheのレコードを特定し、処理します。だから、私はすべてのファイルがアップロードされ、それが開いた後に別のURLを待ってから待つ必要があります。私はどのようにタスクで同じことをすることができますか? –
おそらく、代わりに遅延タスクを使用する必要があります(http://code.google.com/intl/ru/appengine/articles/deferred.html)。 –