[ai]cancelable付きNotifierでマスターインポートが安定


1万行超の商品マスターインポートがどうしても安定しない

AppInventorとSQLiteの仕様のためマスターインポートは下記の方法しかない

  1. PC作業:商品マスターを500件ずつ小分けしたbulk insertファイルを数十個作成
  2. PC作業:UTFに変換
  3. PC作業:webサーバの公開フォルダーへFTP
  4. アプリ側:webgetでbulk insertファイルをダウンロードしimport実行
  5. アプリ側:ファイルの数だけLOOPする(数十回)

この処理中、WEBサーバに負荷が掛かりすぎて、ときどき1・2ファイル分がimportエラー

これまでの対応策は、以下のようなもの

  1. 「FOR~LOOP」を前半部(15ファイルまで)をインポート
  2. 「Timer」で9秒間ポーズ
  3. 後半部(16ファイル以降)をインポート

しかし、WEBサーバのAccess Logを見る限りでは「9秒ポーズ」が効いてるような効いてないような・・?

そこそこ安定したが、まだ怪しい!

そこで、もうひと工夫
「Timer」の代わりに「Notifier」

ファイル15で「Notifier」メッセージ表示
WEBGETしながらbulk importを繰り返すマスターインポートを安定させたい

表示させたメッセージがこれ
WEBGETしながらbulk importを繰り返すマスターインポートを安定させたい

ファイル16以降は、ボタンを押せば「Notifier:afterChoosing」経由で後半インポートが開始させるはずが・・・・・

しかし、Notifierをガン無視して動き続けてる!
Notifierでは、FOR~LOOPを中断できない仕様みたい

そこで、さらなる改良「Notifier:cancelable付き」を利用!

「実行」または「キャンセル」を選ばせるNofiierなんだから
「cancelable無しNofiier」のように

勝手に後半を実行するハズが無い!

で改良したのがこれ
WEBGETしながらbulk importを繰り返すマスターインポートを安定させたい
後半のインポート部がこれ
WEBGETしながらbulk importを繰り返すマスターインポートを安定させたい

メッセージがこれ
WEBGETしながらbulk importを繰り返すマスターインポートを安定させたい

動かしてみると・・・・

キャー、ばっちり!

ボタンを押すまでWEBアクセスが止まってます!
WEBGETしながらbulk importを繰り返すマスターインポートを安定させたい

これで、大きな問題がまた1つクリアできました。

プログラムって面白い。
有料サービスの解約、あと数か月待ってみようと思います 😀


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


2015年12月
 123456
78910111213
14151617181920
21222324252627
28293031 

Topics

Comments

Archive