VPS を 移行して、 Python の version を 2.7 から、3.6 に upgrade しました。 移行時にそれなりにテストはして、問題なさそうには見えたのですが、本日エラーメールを確認したところ、以下のエラーを示すメールがそれなりの数送信されていました。
picture_IO = StringIO(req.content)
TypeError: initial_value must be str or None, not bytes
StringIO に import に関しては、import 文を以下の修正で問題ないと思いますが、文字列? byte? の内部処理でエラーになっているようです。
try:
from StringIO import StringIO
except ImportError:
from io import StringIO
おそらく、以下の記事の内容が原因なのかと思います。
Python3 + Bottle + Pillow でレスポンスとして画像を返す - BLOG EX MACHINA
StringIO ではなく、ByteIO を使用する形で修正しました。
import six
try:
from StringIO import StringIO
except ImportError:
from io import BytesIO
if six.PY2:
picture_IO = StringIO(req.content)
else:
picture_IO = BytesIO(req.content)
picture_IO.seek(0)
Python の Version が 3 であれば、BytesIO を使用する形に書き換えました。
もっといいやり方がありそうに思いますが、とりあえず動くことは確認できました。
以上です。
コメント