質問編集履歴

6

調査結果

2021/03/07 06:35

投稿

saya24
saya24

スコア246

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

画像追加

2021/03/07 06:35

投稿

saya24
saya24

スコア246

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

誤記訂正

2021/03/07 05:34

投稿

saya24
saya24

スコア246

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
- ===> 効果なし、フリーソフトのログに当初から2重実行されている記録は残っていないので納得の結果
411
+ => 効果なし、フリーソフトのログに当初から2重実行されている記録は残っていないので納得の結果
412
412
 
413
413
 
414
414
 
415
415
  ②自アプリケーション内で 新規ファイル察知(1バイト以上)後の メール・退避動作までの待機時間3分を挿入。
416
416
 
417
- ===>効果なし、相変わらず移動元フォルダに送信データ残るが 退避先フォルダには処理結果CSVと共に保管されている。
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

誤記訂正

2021/03/07 02:56

投稿

saya24
saya24

スコア246

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
- ①フリーソフトの当該バットファイルの実装設定(検知設定)を前回実行から3分過ぎない限り再実施無理なよう対応。
409
+ ①フリーソフトの当該バットファイルの実装設定(検知設定)を前回実行から3分過ぎない限り再実施無理なよう対応。
414
410
 
415
411
  ===> 効果なし、フリーソフトのログに当初から2重実行されている記録は残っていないので納得の結果
416
412
 
413
+
414
+
417
415
  ②自アプリケーション内で 新規ファイル察知(1バイト以上)後の メール・退避動作までの待機時間3分を挿入。
418
416
 
419
417
  ===>効果なし、相変わらず移動元フォルダに送信データ残るが 退避先フォルダには処理結果CSVと共に保管されている。

2

追加報告

2021/03/07 02:51

投稿

saya24
saya24

スコア246

test CHANGED
File without changes
test CHANGED
@@ -112,15 +112,13 @@
112
112
 
113
113
  class BackUp():
114
114
 
115
- ###########################################################################################################
116
-
117
- # #
118
-
119
- # 送信処理が終わると、処理結果がCSVで 同フォルダに提供される⇒⇒⇒メール送信後に送信データと併せ退避!#
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 #この関数動作由来の新規ファイルはサイズ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" : #サイズ1以上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() #★★★★★★ 監視フォルダにCSVではない送信ファイル残ることがある。でも退避もされている!
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

追加の報告

2021/03/07 02:46

投稿

saya24
saya24

スコア246

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
+ ```