Tôi đã tạo Telegram Bot để gửi một số ảnh cho người dùng. Nó hoạt động tốt với 4 hoặc 5 bức ảnh, nhưng sau đó bị hỏng. Tôi gửi ảnh như thế này:
cho tôi trong phạm vi(len(trang)):
ảnh = open('pics/{0}.jpg'.format(i+1), 'rb')
bot.send_photo(chat_id=chat_id,photo=photo)
Đây là lỗi của tôi:
2019-03-13 14:30:52,207 (util.py:65 WorkerThread2) LỖI - TeleBot: "Đã xảy ra lỗi bộ nhớ, args=()
Traceback (most recent call last):
Tệp "/root/Env/pdf/lib/python3.5/site-packages/telebot/util.py", dòng 59, đang chạy
nhiệm vụ(*args, **kwargs)
Tệp "pdf.py", dòng 63, trong hand_docs
trang = Convert_from_path('botpdf.pdf', 500)
Tệp "/root/Env/pdf/lib/python3.5/site-packages/pdf2image/pdf2image.py", dòng 98, trong Convert_from_path
dữ liệu, err = proc.communicate()
Tệp "/usr/lib/python3.5/subprocess.py", dòng 1072, trong giao tiếp
stdout, stderr = self._communicate(đầu vào, thời gian kết thúc, thời gian chờ)
Tệp "/usr/lib/python3.5/subprocess.py", dòng 1745, trong _communicate
thiết bị xuất chuẩn = b''.join(thiết bị xuất chuẩn)
Lỗi bộ nhớ
"
Traceback (most recent call last):
Tệp "pdf.py", dòng 99, trong
bot.polling(none_stop=False, interval=0)
Tệp "/root/Env/pdf/lib/python3.5/site-packages/telebot/__init__.py", dòng 389, trong bỏ phiếu
self.__threaded_polling(none_stop, interval, timeout)
Tệp "/root/Env/pdf/lib/python3.5/site-packages/telebot/__init__.py", dòng 413, trong __threaded_polling
self.worker_pool.raise_Exceptions()
Tệp "/root/Env/pdf/lib/python3.5/site-packages/telebot/util.py", dòng 108, trong raise_Exceptions
six.reraise(self.exc_info[0], self.exc_info[1], self.exc_info[2])
Tệp "/root/Env/pdf/lib/python3.5/site-packages/six.py", dòng 693, đang được nâng cấp lại
nâng cao giá trị
Tệp "/root/Env/pdf/lib/python3.5/site-packages/telebot/util.py", dòng 59, đang chạy
nhiệm vụ(*args, **kwargs)
Tệp "pdf.py", dòng 63, trong hand_docs
trang = Convert_from_path('botpdf.pdf', 500)
Tệp "/root/Env/pdf/lib/python3.5/site-packages/pdf2image/pdf2image.py", dòng 98, trong Convert_from_path
dữ liệu, err = proc.communicate()
Tệp "/usr/lib/python3.5/subprocess.py", dòng 1072, trong giao tiếp
stdout, stderr = self._communicate(đầu vào, thời gian kết thúc, thời gian chờ)
Tệp "/usr/lib/python3.5/subprocess.py", dòng 1745, trong _communicate
thiết bị xuất chuẩn = b''.join(thiết bị xuất chuẩn)
Lỗi bộ nhớ
Sử dụng thư mục đầu ra mà bạn hiện đang sử dụngpdf2hình ảnh
Tất cả hình ảnh trong bộ nhớ sẽ được tải. Điều này có thể có tác động rất lớn!
bạn đã viết ở đâutrang = Convert_from_path('botpdf.pdf', 500)
Thay đổi nó thành:
tệp nhập khẩu
với tempfile.TemporaryDirectory() làm đường dẫn:
trang = Convert_from_path('botpdf.pdf', 500, out_folder=path)
Thao tác này sẽ ghi tất cả hình ảnh đã chuyển đổi vào đĩa trước khi trả lại cho bạn (tiết kiệm rất nhiều bộ nhớ). Bạn cũng có thể chuyển đổi sang JPEG thay vì PPM mặc định (là định dạng thô):
trang = Convert_from_path('botpdf.pdf', 500, fmt='jpeg')
Nhưng với giải pháp này, bạn vẫn sẽ gặp vấn đề nếu tệp PDF rất lớn.
Tôi là một lập trình viên xuất sắc, rất giỏi!