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