日々レコード数が増えていく商品マスターのインポートがどうしても安定しない:-(

「WEBからダウンロードさせる」
「1ファイル最大500レコードのBULK INSERT」

この2つの制約の為、妙に複雑になってしまったマスターインポート機能。

イントラ内に建てたWEBサーバからBULK INSERTファイルを「FOR EACH」で連続処理させるとWEBサーバ側もスマートフォン側も負荷がかかり過ぎるのか、ときどき途中1,2ファイルがインポートエラーなるんです 😕

これまでの対応策は、以下のようなもの
1:「FOR」を前半部(15ファイルまで)・後半部(16ファイル以降)に分ける
2:前半終了後、「Timer」が9秒待ちを作り後半部を実行

でも、WEBサーバのアクセスログを見るとファイル15と16の間の息継ぎは、出来たり、出来なかったり・・・ 🙁
とっても不安定な動きをするんですが、それでもエラーが半減したのでそのまま採用。

そして2015年12月、ハンディーターミナルアプリも完成。
そこそこ安定したので、そろそろこの有料AppInventorサービスを解約するつもりでした。

そこで、その前にマスターインポートのさらなる安定を目指し「Notifier」に着目。
と言っても、開発当初に試し挫折したことの再チャレンジなんですけど・・・

ちなみにAppInventorには数種類の「Notifier」が用意されています。
WEBGETしながらbulk importを繰り返すマスターインポートを安定させたい

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

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

なぜか、それを待たずに動き出してしまう:-o

前回はここで諦めました。

今回は、「cancelable付き」を利用してみることに。
それなりにAppIventor開発の経験を積んだ今考えると、「僕はなぜこれを試さなかったんだろう?」と後悔しています。

「実行」または「キャンセル」を選ばせるNofiierなんだから、「cancelable無しNofiier」のように勝手に後半を実行するハズが無い!

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

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

動かしてみると・・・・
キャー、ばっちりです:lol:
ボタンを押すまでWEBアクセスが止まってます!
WEBGETしながらbulk importを繰り返すマスターインポートを安定させたい

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

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

(144 views)

コメントを残す

メールアドレスが公開されることはありません。