質問編集履歴
6
調査結果
test
CHANGED
File without changes
|
test
CHANGED
@@ -437,3 +437,37 @@
|
|
437
437
|
### 20210307 14:35 qnoirさん提供プログラム、デバッグ実行の結果
|
438
438
|
|
439
439
|
![イメージ説明](6d3ff87ebf205e5e547451cf79e8e951.png)
|
440
|
+
|
441
|
+
|
442
|
+
|
443
|
+
|
444
|
+
|
445
|
+
### 20210305 15:35 qnoirさん提供プログラム実行結果
|
446
|
+
|
447
|
+
【1回目↓】
|
448
|
+
|
449
|
+
```log
|
450
|
+
|
451
|
+
2021-03-07 15:21:11,822 | Started to observe. [path : .\20210307_152111_6038_log.txt]
|
452
|
+
|
453
|
+
2021-03-07 15:21:35,150 | on_created() : C:\Tools\SalesforceConnect\data\SFA09\Reservation_insert_error.csv
|
454
|
+
|
455
|
+
2021-03-07 15:21:38,384 | on_modified(): C:\Tools\SalesforceConnect\data\SFA09\Reservation_insert_error.csv
|
456
|
+
|
457
|
+
2021-03-07 15:21:46,792 | on_modified(): C:\Tools\SalesforceConnect\data\SFA09\Reservation_insert_error.csv
|
458
|
+
|
459
|
+
```
|
460
|
+
|
461
|
+
【2回目↓】
|
462
|
+
|
463
|
+
```log
|
464
|
+
|
465
|
+
2021-03-07 15:25:08,158 | Started to observe. [path : .\20210307_152508_5250_log.txt]
|
466
|
+
|
467
|
+
2021-03-07 15:25:34,611 | on_created() : C:\Tools\SalesforceConnect\data\SFA09\Reservation_insert_error.csv
|
468
|
+
|
469
|
+
2021-03-07 15:25:38,299 | on_modified(): C:\Tools\SalesforceConnect\data\SFA09\Reservation_insert_error.csv
|
470
|
+
|
471
|
+
2021-03-07 15:25:49,393 | on_modified(): C:\Tools\SalesforceConnect\data\SFA09\Reservation_insert_error.csv
|
472
|
+
|
473
|
+
```
|
5
画像追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -429,3 +429,11 @@
|
|
429
429
|
ベンダ様提供のプログラムが C#やVB.NETでいうUsingみたいなものを使っていない、というこでしょうか?
|
430
430
|
|
431
431
|
何か 当方のPython側で どうにか対策できないでしょうか
|
432
|
+
|
433
|
+
|
434
|
+
|
435
|
+
|
436
|
+
|
437
|
+
### 20210307 14:35 qnoirさん提供プログラム、デバッグ実行の結果
|
438
|
+
|
439
|
+
![イメージ説明](6d3ff87ebf205e5e547451cf79e8e951.png)
|
4
誤記訂正
test
CHANGED
File without changes
|
test
CHANGED
@@ -114,7 +114,7 @@
|
|
114
114
|
|
115
115
|
###############################################################################################
|
116
116
|
|
117
|
-
# 送信処理が終わると、処理結果がCSVで 同フォルダに提供される⇒⇒⇒メール送信後に送信データと併せ退避
|
117
|
+
# 送信処理が終わると、処理結果がCSVで 同フォルダに提供される⇒⇒⇒メール送信後に送信データと併せ退避
|
118
118
|
|
119
119
|
|
120
120
|
|
@@ -408,16 +408,24 @@
|
|
408
408
|
|
409
409
|
①フリーソフトの当該バットファイルの実装設定(検知設定)を前回実行から3分過ぎない限り再実施無理なよう対応。
|
410
410
|
|
411
|
-
=
|
411
|
+
=> 効果なし、フリーソフトのログに当初から2重実行されている記録は残っていないので納得の結果
|
412
412
|
|
413
413
|
|
414
414
|
|
415
415
|
②自アプリケーション内で 新規ファイル察知(1バイト以上)後の メール・退避動作までの待機時間3分を挿入。
|
416
416
|
|
417
|
-
=
|
417
|
+
=>効果なし、相変わらず移動元フォルダに送信データ残るが 退避先フォルダには処理結果CSVと共に保管されている。
|
418
|
-
|
419
|
-
|
420
|
-
|
418
|
+
|
419
|
+
|
420
|
+
|
421
|
-
一体何が起きているのだと思い、移動元フォルダに残ったファイルを コマンドプロンプトから削除を試行
|
421
|
+
一体何が起きているのだと思い、移動元フォルダに残ったファイルを コマンドプロンプトから削除を試行
|
422
422
|
|
423
423
|
![イメージ説明](6445744a235ab666b171f45b73410041.png)
|
424
|
+
|
425
|
+
|
426
|
+
|
427
|
+
アクセスが拒否されました、と言われながら 移動はできた....状況ですね。
|
428
|
+
|
429
|
+
ベンダ様提供のプログラムが C#やVB.NETでいうUsingみたいなものを使っていない、というこでしょうか?
|
430
|
+
|
431
|
+
何か 当方のPython側で どうにか対策できないでしょうか
|
3
誤記訂正
test
CHANGED
File without changes
|
test
CHANGED
@@ -112,13 +112,9 @@
|
|
112
112
|
|
113
113
|
class BackUp():
|
114
114
|
|
115
|
-
|
116
|
-
|
117
|
-
#
|
118
|
-
|
119
|
-
# 送信処理が終わると、処理結果がCSVで 同フォルダに提供される⇒⇒⇒メール送信後に送信データと併せ退避!
|
120
|
-
|
121
|
-
# # ######################################################################################################
|
115
|
+
###############################################################################################
|
116
|
+
|
117
|
+
# 送信処理が終わると、処理結果がCSVで 同フォルダに提供される⇒⇒⇒メール送信後に送信データと併せ退避###############################################################################################
|
122
118
|
|
123
119
|
|
124
120
|
|
@@ -202,7 +198,7 @@
|
|
202
198
|
|
203
199
|
except Exception as e:
|
204
200
|
|
205
|
-
time.sleep(1)
|
201
|
+
time.sleep(1) #★移動できなければ送信中と判断、また移動をリトライ★
|
206
202
|
|
207
203
|
|
208
204
|
|
@@ -410,10 +406,12 @@
|
|
410
406
|
|
411
407
|
送信データが移動元フォルダに残ってしまう事象につき、また当該アプリケーションが動作し続けることから以下を試行
|
412
408
|
|
413
|
-
①フリーソフトの当該バットファイルの実装設定(検知設定)を
|
409
|
+
①フリーソフトの当該バットファイルの実装設定(検知設定)を前回実行から3分過ぎない限り再実施無理なよう対応。
|
414
410
|
|
415
411
|
===> 効果なし、フリーソフトのログに当初から2重実行されている記録は残っていないので納得の結果
|
416
412
|
|
413
|
+
|
414
|
+
|
417
415
|
②自アプリケーション内で 新規ファイル察知(1バイト以上)後の メール・退避動作までの待機時間3分を挿入。
|
418
416
|
|
419
417
|
===>効果なし、相変わらず移動元フォルダに送信データ残るが 退避先フォルダには処理結果CSVと共に保管されている。
|
2
追加報告
test
CHANGED
File without changes
|
test
CHANGED
@@ -112,15 +112,13 @@
|
|
112
112
|
|
113
113
|
class BackUp():
|
114
114
|
|
115
|
-
######################################################################################################
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
###########################################################################################################
|
115
|
+
######################################################################################################
|
116
|
+
|
117
|
+
# #
|
118
|
+
|
119
|
+
# 送信処理が終わると、処理結果がCSVで 同フォルダに提供される⇒⇒⇒メール送信後に送信データと併せ退避!
|
120
|
+
|
121
|
+
# # ######################################################################################################
|
124
122
|
|
125
123
|
|
126
124
|
|
@@ -134,17 +132,17 @@
|
|
134
132
|
|
135
133
|
dst_dir = dst_dir + "/" + dt_now.strftime('%Y%m%d%H%M%S')
|
136
134
|
|
137
|
-
os.makedirs(dst_dir, exist_ok=True)
|
135
|
+
os.makedirs(dst_dir, exist_ok=True) #指定の退避先フォルダ内に日付時間フォルダを作成
|
138
136
|
|
139
137
|
|
140
138
|
|
141
|
-
for p in os.listdir(src_dir):
|
139
|
+
for p in os.listdir(src_dir): #監視フォルダ内コレクションループ
|
142
|
-
|
140
|
+
|
143
|
-
fullpath = os.path.join(src_dir, p)
|
141
|
+
fullpath = os.path.join(src_dir, p) #ファイルのフルパスを取得
|
144
142
|
|
145
143
|
|
146
144
|
|
147
|
-
wcnt = 0
|
145
|
+
wcnt = 0 #この関数動作由来の新規ファイルはサイズ0の可能性あり-->待機
|
148
146
|
|
149
147
|
while True:
|
150
148
|
|
@@ -168,7 +166,7 @@
|
|
168
166
|
|
169
167
|
base, ext = os.path.splitext(p)
|
170
168
|
|
171
|
-
if ext == ".csv" :
|
169
|
+
if ext == ".csv" : #サイズ1以上CSVファイルは処理結果内容-->メールで添付送信
|
172
170
|
|
173
171
|
if argcnt < 5 :
|
174
172
|
|
@@ -198,7 +196,7 @@
|
|
198
196
|
|
199
197
|
try :
|
200
198
|
|
201
|
-
shutil.move(os.path.join(src_dir, p), dst_dir)
|
199
|
+
shutil.move(os.path.join(src_dir, p), dst_dir)#★移動できれば使用中でないと判断★
|
202
200
|
|
203
201
|
break
|
204
202
|
|
@@ -210,13 +208,13 @@
|
|
210
208
|
|
211
209
|
|
212
210
|
|
213
|
-
|
211
|
+
#★★★監視フォルダ内全てのファイルが移動退避し終えたら 関数を終わらせてアプリも閉じたい★★★
|
214
212
|
|
215
213
|
|
216
214
|
|
217
215
|
'''
|
218
216
|
|
219
|
-
######################################################################################################
|
217
|
+
######################################################################################################
|
220
218
|
|
221
219
|
# #
|
222
220
|
|
@@ -224,7 +222,7 @@
|
|
224
222
|
|
225
223
|
# #
|
226
224
|
|
227
|
-
######################################################################################################
|
225
|
+
######################################################################################################
|
228
226
|
|
229
227
|
'''
|
230
228
|
|
@@ -258,9 +256,9 @@
|
|
258
256
|
|
259
257
|
|
260
258
|
|
261
|
-
self.observer.unschedule_all()
|
259
|
+
self.observer.unschedule_all()#★★ 監視フォルダに送信ファイル残ることがある。でも退避もされている!
|
262
|
-
|
260
|
+
|
263
|
-
self.observer.stop()
|
261
|
+
self.observer.stop() #★★ しかも終わってくれない(新たな監視状況がつくりだされているような感じ)
|
264
262
|
|
265
263
|
|
266
264
|
|
@@ -304,7 +302,7 @@
|
|
304
302
|
|
305
303
|
event_handler = ChangeHandler(observer)
|
306
304
|
|
307
|
-
observer.schedule(event_handler, target_dir, recursive=True)
|
305
|
+
observer.schedule(event_handler, target_dir, recursive=True)#特定のフォルダを引数に与えて監視スタート
|
308
306
|
|
309
307
|
observer.start()
|
310
308
|
|
@@ -405,3 +403,23 @@
|
|
405
403
|
DELETE_INSERT.bat "STOCKS_export" "STOCKS_delete" "STOCKS_insert"
|
406
404
|
|
407
405
|
```
|
406
|
+
|
407
|
+
|
408
|
+
|
409
|
+
### 追加報告 20200307 11:40
|
410
|
+
|
411
|
+
送信データが移動元フォルダに残ってしまう事象につき、また当該アプリケーションが動作し続けることから以下を試行
|
412
|
+
|
413
|
+
①フリーソフトの当該バットファイルの実装設定(検知設定)を、前回の実行から3分過ぎない限り再実施無理なよう対応。
|
414
|
+
|
415
|
+
===> 効果なし、フリーソフトのログに当初から2重実行されている記録は残っていないので納得の結果
|
416
|
+
|
417
|
+
②自アプリケーション内で 新規ファイル察知(1バイト以上)後の メール・退避動作までの待機時間3分を挿入。
|
418
|
+
|
419
|
+
===>効果なし、相変わらず移動元フォルダに送信データ残るが 退避先フォルダには処理結果CSVと共に保管されている。
|
420
|
+
|
421
|
+
|
422
|
+
|
423
|
+
一体何が起きているのだと思い、移動元フォルダに残ったファイルを コマンドプロンプトから削除を試行、以下のとおり
|
424
|
+
|
425
|
+
![イメージ説明](6445744a235ab666b171f45b73410041.png)
|
1
追加の報告
test
CHANGED
File without changes
|
test
CHANGED
@@ -339,3 +339,69 @@
|
|
339
339
|
|
340
340
|
|
341
341
|
これは 上記のコードで 一体何が悪く このような問題が起きてしまっているのでしょうか? どなたかご教示を頂けますと幸いです、よろしくお願い申し上げます。
|
342
|
+
|
343
|
+
|
344
|
+
|
345
|
+
|
346
|
+
|
347
|
+
### 追記20210307 10:10
|
348
|
+
|
349
|
+
ベンダ様から提供されているデータ送信処理のバットファイルに、自分のアプリが前もって起動されるよう挿入したのですが
|
350
|
+
|
351
|
+
データ種類の違いで データ送信処理の実装方法が異なるようです。このことから監視フォルダに生成されるCSVファイルの生成・使用タイミング(共有状況)に違いを生んでいる可能性があります。以下バットファイルの【違い】を表しました。
|
352
|
+
|
353
|
+
フリーの監視ソフトによって 送信すべきデータファイルが所定フォルダに配置されると 以下のバットファイルが動作するようになっていますが、これが再度実施されていて 自分のアプリケーションも再起動されている可能性があります....(でもフリーの監視ソフトにその記録が残っていない)
|
354
|
+
|
355
|
+
|
356
|
+
|
357
|
+
【問題ないパターン↓】
|
358
|
+
|
359
|
+
```bat
|
360
|
+
|
361
|
+
@ECHO OFF
|
362
|
+
|
363
|
+
rem #########################################################
|
364
|
+
|
365
|
+
rem #
|
366
|
+
|
367
|
+
rem #########################################################
|
368
|
+
|
369
|
+
|
370
|
+
|
371
|
+
START D:\今回作ったプログラム 引数1, 引数2, 引数3
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
rem 送信処理、本来このコマンド行のみのバットファイルだが上記START文を追加
|
376
|
+
|
377
|
+
|
378
|
+
|
379
|
+
UPSERT.bat "ITEMMASTER_upsert"
|
380
|
+
|
381
|
+
```
|
382
|
+
|
383
|
+
|
384
|
+
|
385
|
+
【問題あるパターン↓】
|
386
|
+
|
387
|
+
```bat
|
388
|
+
|
389
|
+
@ECHO OFF
|
390
|
+
|
391
|
+
rem #########################################################
|
392
|
+
|
393
|
+
rem #
|
394
|
+
|
395
|
+
rem #########################################################
|
396
|
+
|
397
|
+
|
398
|
+
|
399
|
+
START D:\今回作ったプログラム 引数1, 引数2, 引数3
|
400
|
+
|
401
|
+
|
402
|
+
|
403
|
+
rem 送信処理、本来このコマンド行のみのバットファイルだが上記START文を追加
|
404
|
+
|
405
|
+
DELETE_INSERT.bat "STOCKS_export" "STOCKS_delete" "STOCKS_insert"
|
406
|
+
|
407
|
+
```
|