質問編集履歴

6

sss

2024/08/13 08:55

投稿

Tohmas_1010
Tohmas_1010

スコア15

test CHANGED
File without changes
test CHANGED
@@ -30,3 +30,26 @@
30
30
  explain = jsondata['explain']
31
31
  return imageURL, explain
32
32
  ```
33
+
34
+ ```Python
35
+ Deepl_APIkey = os.getenv('Deepl_APIkey')
36
+
37
+ def translate(source_txt):
38
+ try:
39
+ params = {'auth_key': Deepl_APIkey, 'text': source_txt, 'source_lang': 'EN', "target_lang": 'JA'}
40
+ deepl_response = requests.post("https://api-free.deepl.com/v2/translate", data=params)
41
+ deepl_response.raise_for_status()
42
+ deepl_json = deepl_response.json()
43
+ translated_text = deepl_json['translations'][0]['text']
44
+ translated_text = translated_text.replace("。", "。\n" + os.linesep) # 自動改行
45
+ translated_text = translated_text.rstrip(os.linesep) # 最後の改行を削除
46
+ return translated_text
47
+
48
+ except HTTPError as h:
49
+ if '403' in str(h) or '404' in str(h):
50
+ print(f'=== APIKeyまたはendpointを確認してください ===\n{h}\n{traceback.extract_tb(h.__traceback__)[0]}')
51
+ else:
52
+ print(f'=== HTTPError ===\n{h}\n{traceback.extract_tb(h.__traceback__)[0]}')
53
+ except RequestException as re:
54
+ print(f'=== その他のエラーが発生しました ===\n{re}\n{traceback.extract_tb(h.__traceback__)[0]}')
55
+ ```

5

ccc

2024/08/13 05:35

投稿

Tohmas_1010
Tohmas_1010

スコア15

test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,5 @@
1
1
  ### 発生している問題・分からないこと
2
- 以下のコードでFlaskが稼働していると仮定します。そこでx.pyの関数で使われているAPIkeyが不正だった場合、ログには以下のエラーメッセージが表示されるだけで、API関連のエラーだということが読み取れません。一応、以下の「試したこと」の方法で「以下のエラーメッセージ」に加えて「API関連のエラーだということその詳細(ファイル名や行数)」を表示させることはできましたが、もっと最適なコードの書き方はないでしょうか?
2
+ 以下のapp.pyを実行するとFlaskサーバー立ち上がると仮定します。そこでx.pyの関数で使われているAPIkeyが不正だった場合、ログには以下のエラーメッセージが表示されるだけで、API関連のエラーだということが読み取れません。一応、以下の「試したこと」の方法で「以下のエラーメッセージ」に加えて「API関連のエラーだということその詳細(ファイル名や行数)」を表示させることはできましたが、もっと最適なコードの書き方はないでしょうか?
3
3
 
4
4
  ### エラーメッセージ
5
5
  imageURL, explain = X()

4

xxx

2024/08/12 11:30

投稿

Tohmas_1010
Tohmas_1010

スコア15

test CHANGED
File without changes
test CHANGED
@@ -9,13 +9,19 @@
9
9
  x.pyの関数に「例外処理を加えてHttp errorをキャッチさせる」という機能と「tracebackモジュールで詳細の場所も表示させる」という機能を加えてapp.py稼働時のログに表示させた。
10
10
 
11
11
  ### コード
12
- ```Python - app.py
12
+ ```Python
13
+ ---------
14
+ app.py
15
+ ---------
13
16
  from x import X
14
17
 
15
18
  # Flask稼働中に実行される
16
19
  imageURL, explain = X()
17
20
  ```
18
- ```Python - x.py
21
+ ```Python
22
+ ---------
23
+ x.py
24
+ ---------
19
25
  # APIを使ってimageURL, explainを取得して返す
20
26
  def X():
21
27
  res = request.get(http://exsample)

3

xxxx

2024/08/12 11:26

投稿

Tohmas_1010
Tohmas_1010

スコア15

test CHANGED
File without changes
test CHANGED
@@ -5,9 +5,10 @@
5
5
  imageURL, explain = X()
6
6
  TypeError: cannot unpack non-iterable NoneType object
7
7
 
8
- ##### 試したこと
8
+ ### 試したこと
9
9
  x.pyの関数に「例外処理を加えてHttp errorをキャッチさせる」という機能と「tracebackモジュールで詳細の場所も表示させる」という機能を加えてapp.py稼働時のログに表示させた。
10
10
 
11
+ ### コード
11
12
  ```Python - app.py
12
13
  from x import X
13
14
 

2

っっっs

2024/08/12 11:25

投稿

Tohmas_1010
Tohmas_1010

スコア15

test CHANGED
File without changes
test CHANGED
@@ -1,18 +1,25 @@
1
- ### 実現したいこと
2
- 以下を参照してください。
3
-
4
1
  ### 発生している問題・分からないこと
5
- 以下の状況でapp.pyを稼働させてx.pyの関数Xを利用すとき、APIに関する情報(APIのkeyやエンドポイントURL)が不正だった場合のエラーメッセージ以下の通りです。この場合、API情報不正だた場合の最適解を教えていただいです!
6
-
7
- ### 状況
8
- - リストFlaskを稼働させるapp.py + apiを使って情報を取得するx.py
9
- - リストapp.pyにx.pyをimportして使う
10
- - リストx.pyの関数Xはreturn x,yしていて、それをapp.pyでx, y = X()で受け取る
2
+ 以下のコードFlaskが稼働いると仮定します。そこでx.pyの関数で使われているAPIkeyが不正だった場合、ログには以下のエラーメッセージが表示されるだけで、API関連のエラーだということが読み取れません。一応、以下の「試したと」方法で「以下のエラーメッセージ」に加えて「API関連のエラーだということその詳細(ファイル名や行数)」を表示させことはできました、も最適なコードの書方はないでしょうか?
11
3
 
12
4
  ### エラーメッセージ
13
- x, y = X()
5
+ imageURL, explain = X()
14
6
  TypeError: cannot unpack non-iterable NoneType object
15
7
 
8
+ ##### 試したこと
9
+ x.pyの関数に「例外処理を加えてHttp errorをキャッチさせる」という機能と「tracebackモジュールで詳細の場所も表示させる」という機能を加えてapp.py稼働時のログに表示させた。
16
10
 
11
+ ```Python - app.py
17
- ##### 上記の詳細・結果
12
+ from x import X
13
+
14
+ # Flask稼働中に実行される
15
+ imageURL, explain = X()
16
+ ```
17
+ ```Python - x.py
18
+ # APIを使ってimageURL, explainを取得して返す
19
+ def X():
18
- 今のところ、x.pyの関数に例外処理を加えてHttp errorをキャッチしてapp.py稼働時のログに表示させるという方法しか考えられていません(tracebackモジュールで詳細の場所も表示させる)。
20
+ res = request.get(http://exsample)
21
+ jsondata = res.json()
22
+ imageURL = jsondata['imageURL']
23
+ explain = jsondata['explain']
24
+ return imageURL, explain
25
+ ```

1

っっd

2024/08/12 08:48

投稿

Tohmas_1010
Tohmas_1010

スコア15

test CHANGED
File without changes
test CHANGED
@@ -14,21 +14,5 @@
14
14
  TypeError: cannot unpack non-iterable NoneType object
15
15
 
16
16
 
17
-
18
- ### 該当のソースコード
19
-
20
- ```
21
- 特になし
22
- ```
23
-
24
- ### 試したこと・調べたこと
25
- - [x] teratailやGoogle等で検索した
26
- - [ ] ソースコードを自分なりに変更した
27
- - [ ] 知人に聞いた
28
- - [ ] その他
29
-
30
17
  ##### 上記の詳細・結果
31
18
  今のところ、x.pyの関数に例外処理を加えてHttp errorをキャッチしてapp.py稼働時のログに表示させるという方法しか考えられていません(tracebackモジュールで詳細の場所も表示させる)。
32
-
33
- ### 補足
34
- 特になし