#python #django #shared-memory #web-frameworks
#python #django #разделяемая память #веб-фреймворки
Вопрос:
Вот настройка: на одноплатном компьютере с очень элементарным Linux я использую Django app
. Это приложение при нажатии кнопки или в ответ на данные, описанные ниже, должно вызывать либо функцию из библиотеки, написанной в C
, либо скомпилированную C
программу, для записи данных в системную память по указанному адресу, например, тыкать / заглядывать. ( Python
похоже, это невозможно сделать изначально). Django
Приложение также должно непрерывно отображать данные, которые считываются из памяти из той же библиотеки / программы.
Теперь мой вопрос заключается в том, как начать с настройки сценария, описанного выше. Возможно ли это вообще с помощью веб-приложения? Является Django
ли или, что более важно, любой веб-фреймворк даже правильным подходом здесь? Я здесь в некоторой растерянности, так как я потратил довольно много часов, пытаясь понять, как это сделать, не получив самой базовой отправной точки…
Отказ от ответственности: Я довольно новичок во всей веб-среде и, что более важно, в веб-разработке в целом, поэтому извините, если это плохой вопрос, я мог бы легко найти информацию по этой теме в Интернете, но я не мог найти хорошую отправную точку в этом.
Ответ №1:
Я хотел добавить комментарий, но не хватило места… в любом случае
Вы можете написать собственное расширение на C для Python, которое могло бы делать то, что вам нужно, проверьте это.
Теперь о том, что данные отображаются непрерывно, это довольно расплывчато, если эта библиотека C переключает этот гипотетический адрес, очень часто и очень быстро, вам нужно обновлять клиент браузера как можно быстрее.
Я думаю, что websockets справились бы с этой задачей, но они связаны с js, поэтому я думаю, что NodeJS был бы лучшим кандидатом для серверной части вашего приложения вместо Django.
Если вы хотите придерживаться Django, вы также можете предоставить URL-адрес с сгенерированным значением адреса и иметь веб-страницу, непрерывно (с небольшим интервалом) проверяющую этот URL-адрес с помощью простого вызова ajax, довольно уродливого и неэффективного, но работающего.
В любом случае, ИМХО, вам лучше всего использовать websockets, потому что с ними у вас есть полная двойная связь между клиентом и сервером.
Удачи с вашим проектом.
Информация:
Комментарии:
1. Адрес переключается не часто, значение может быстро меняться, и на некоторые изменения значения адреса необходимо отвечать, записывая адрес ответа как можно быстрее. Таким образом, я подумал, что лучше всего запустить поток C, который непрерывно считывает адреса и отвечает на них, если это необходимо. Теперь эта программа на C должна каким-то образом передавать данные при их изменении в приложение Django..
2. Чтобы уведомить Django об изменении, вы можете попробовать Signals . Я бы интегрировал ваш вызов внутри Python изначально, или вы все равно можете использовать os.system для вызова программы.