Вы запускаете другой питоновский скрипт просто как дочерний процесс.
Я верно понимаю, что импортировать его и дёрнуть эквивалент main() через multiprocessing не представляется возможным?
Ladn0, так, ещё разок...
Т.е. у вас всё-такие есть форма с введёнными пользователем данными, которую тоже надо передать?
Тогда Hidden Input должен сработать нормально. Просто присваивай значение переменной этому инпуту в последний момент.
От "редактирования пользователем через редактор HTML" это защитит, так как введённое значение будет перезаписано нашим кодом.
Вот от чего это НЕ защитит, так это от конструирования злоумышленником запроса целиком.
Так что просто имейте ввиду, что слепо доверять данным, полученным от клиента (вебстраницы) нельзя всё равно.
Просто когда ты создал объект BS, сохрани ссылку на его.
def __init__(self, source):
self._bs = None
#тут всё что у тебя
def get_html(self):
"""Get html content"""
if self._bs is None:
self._bs = BeautifulSoup(self.get_response(), "lxml")
return self._bs
Sony_py, А нафига тогда использовать метод __str__? Создай свой и возвращай объект.
Только имей ввиду что контент стоит кэшировать - у тебя каждый раз запрос делается заново при вызове метода.
S10LI, это довольно спорное решение, хотя sleep может и помочь.
Вообще у вас один из двух случаев:
если запись и чтение выполняются примерно одинаково часто, и оба из одного потока, то достаточно использовать Mutex. Захватываем мьютекс перед началом работы со словарём, отпускаем сразу после.
А вот если чтение сильно чаще чем запись, то это уже read-write lock, который позволяет параллельные чтения, но не чтение параллельно с записью. Насколько я знаю, такого примитива нет, но люди писали замену сами, можно поискать.
Без кода бота ничего не понять. Код оформляется кнопкой </>.
Далее, если считаешь, что запрос на insert не выполнился - проверь! Загляни в базу и посмотри, есть ли записи для пользователей с другого сервера.
Иван Петров, речь про те файлы, в которые могут писать php скрипты (читай, процесс веб-сервера). В пхп есть функция touch() для смены метки времени модификации на желаемую (по умолчанию на текущую).
Если хостинг вам подконтролен (свой физический сервер или VPS, а не просто веб-хостинг), можно попытаться закрыть пользователю, от которого запущен веб сервер, доступ на запись всюду, кроме необходимых каталогов (типа каталога для загружаемых файлов). Но сразу оговорюсь: я понятия не имею, какие директории должны быть разрешены на запись, чтобы не сломать работу вордпресса вообще и его обновлялки в частности.
Andrei1penguin1, Можно и так. Но хотя бы не бери индекс в children. Это хрупкое решение - если позиции виджетов в children изменятся (добавили/удалили контрол), то код сломается. Лучше уж искать по какому-то другому признаку...
Andrei1penguin1, если FirstWidget - это твой собственный класс, то сконструировать SecondWidget заранее и передать FirstWidget эту ссылку через конструктор. Либо в более сложном случае (несколько связанных виджетов), расширить наследованием класс их родителя, и пусть виджеты обращаются к нему за сервисами (например, чтобы получить доступ друг к другу).
Не знаю, насколько хорошо это вписывается в парадигму kivy, но я бы сделал так.