Это выглядит так:
Код: Выделить всё
class VideoCamera():
def __init__(self):
# code
def get_frame(self):
# code
return frame
def gen(camera):
while True:
yield camera.get_frame()
def view_cam(request):
return StreamingHttpResponse(gen(VideoCamera()), content_type="multipart/x-mixed-replace;boundary=frame")
Я что-то упустил?< /p>
Изменить:
Чтобы исключить все, что связано с камерой, я сделал следующее:
Код: Выделить всё
def gen():
for i in range(1000):
time.sleep(1)
print(i)
yield i
def view_cam(request):
return StreamingHttpResponse(gen(), content_type="multipart/x-mixed-replace;boundary=frame")
Редактировать 2:
В этом проекте используются каналы Django. Я только что заметил, что если я отключу каналы, закомментировав их в файле settings.py, приведенный выше пример будет работать отлично. Я не думал, что каналы связаны с проблемой, но, видимо, так оно и есть.
Сервер разработки каналов действительно обнаруживает отключение через 10 секунд (не сразу). например сервер django по умолчанию) и покажите это:
Вызов экземпляра приложения () выполняется в
/home/pi/paperless_clipboard /venv3/lib/python3.5/site-packages/channels/http.py:213>
wait_for=._call_check_cancel() в
/usr/lib/python3.5/asyncio/futures.py :452, Task._wakeup()]>> для
соединение слишком долго закрывалось и было прервано.
но, несмотря на сообщение о том, что что-то было уничтожено, gen() продолжает работать, выводя числа на терминал.
Подробнее здесь: https://stackoverflow.com/questions/547 ... isconnects