ラズベリーパイピコをmicropythonにて動作テスト中、
メモリ不足を表すエラー「OSError: [Errno 12] ENOMEM」が発生します
メッセージ数を少なくすれば、エラーが起きなくなるのですが、
会社の業務改善に使用する関係上、一度のプログラムでメッセージ数を10件ほど送らなければならないという背景があります
ラズベリーパイピコのメモリは256KB程度であり、
メッセージを送った程度ではいっぱいになるはずがないと思います
そこで質問ですが、
・メモリ不足エラーを解消する、プログラムの書き方はないでしょうか?
・調べても見つからなかったのですが、ラズベリーパイピコのメモリを増設する方法はないのでしょうか?
調べた結果、whileの書き方やif構文などの書き方に問題があるなどの結果が出てきたため、
一度while 関数、if関数など余計な条件はすべて削除し、
「30秒ごとにメッセージを送る」というプログラムを書きました
LINEからメッセージを7通ほど送ったところで、メモリ不足のエラーが発生してしまいます
メッセージ数を5つ以内に収めると
問題なくプログラムが動作することを確認しました
・ソースコードは以下の通りになります
import machine, utime import network, urequests from ssid import SSID, PASS wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(SSID, PASS) line_header = { 'Content-Type' : 'application/x-www-form-urlencoded', 'Authorization': 'Bearer' + ' ' + '「LINE notify API」' } while(not wlan.isconnected()): print('connecting...') utime.sleep(1.0) print('connected.') line_message = 'message=' + 'device found' print(line_message) urequests.post('https://notify-api.line.me/api/notify', headers = line_header, data = line_message) #30秒に一度、LINEメッセージを送る utime.sleep(30.0) print('connected.') line_message = 'message=' + 'device found' print(line_message) urequests.post('https://notify-api.line.me/api/notify', headers = line_header, data = line_message) utime.sleep(30.0) print('connected.') line_message = 'message=' + 'device found' print(line_message) urequests.post('https://notify-api.line.me/api/notify', headers = line_header, data = line_message) utime.sleep(30.0) print('connected.') line_message = 'message=' + 'device found' print(line_message) urequests.post('https://notify-api.line.me/api/notify', headers = line_header, data = line_message) utime.sleep(30.0) print('connected.') line_message = 'message=' + 'device found' print(line_message) urequests.post('https://notify-api.line.me/api/notify', headers = line_header, data = line_message) utime.sleep(30.0) print('connected.') line_message = 'message=' + 'device found' print(line_message) urequests.post('https://notify-api.line.me/api/notify', headers = line_header, data = line_message)
エラーメッセージは以下の通りになります
message=device found connected. message=device found connected. message=device found connected. message=device found connected. message=device found connected. message=device found Traceback (most recent call last): File "<stdin>", line 48, in <module> File "urequests.py", line 184, in post File "urequests.py", line 83, in request OSError: [Errno 12] ENOMEM >>>

回答1件
あなたの回答
tips
プレビュー