WEBサイト構築中につき大量のデータを登録することに。
大体数万件になりますか。
今回GAE+Pythonで開発中。
CSVファイルのアップロード機能を裏ページに実装し、登録を試みるが、
GAEの1リクエスト30秒という制約により一回に約200件ずつしか登録できない。
数万件のCSVファイルを数百件毎に分割するのも面倒、というか膨大な時間がもったいない。
そこで、登録処理を自動かつ大量に一括で走らせるために試行錯誤中。
今回はTask Queueをデータ登録用に作成。
一件ずつTaskを登録し、定期的に処理を実行することで自動化を実現することに。
肝心なCSVデータは一時的なものなので、GAEとは別の公開用のサーバーにアップ。
pythonライブラリ urllibを使用しCSVデータにアクセスした。
tasks.py
----------------------------------------------------------------------
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from google.appengine.ext import webapp
from google.appengine.api.labs import taskqueue
import urllib
class add_tasks(webapp.RequestHandler):
def get(self):
mytask = taskqueue.Queue('task-queue')
#URLパス
urlRequest="http://example.com/csvdata/data.csv"
#CSVファイルにアクセス
result = urllib.urlopen(urlRequest)
#取得したデータを1行ずつTaskに追加
for readline in result.readlines():
row = readline.split(',')
if len(row) > 0:
task = taskqueue.Task(url='/data_ins' , params = {
'prm0':unicode(row[0], 'cp932'),
'prm1':unicode(row[1], 'cp932'),
'prm2':unicode(row[2], 'cp932'),
'prm3':unicode(row[3], 'cp932'),
})
mytask.add(task)
----------------------------------------------------------------------
これだけのことなのにまたかなりの時間を要しちゃいました。
ただこの後、実際にTaskの実行で走らせる登録処理が動作せず。
簡単に直せそうだったけどまたはまっちゃいそうだし、力つきてTaskの登録までで終了。
pythonが全然慣れません!
わからないことが多すぎて。
日々精進。
0 件のコメント:
コメントを投稿