Anonymous
сори, я хз что у тебя :( мои идеи кончились
Воспользуюсь wget, есть опция --content-disposition, протестировал, работает. :)
Julian 🏳️‍🌈
Парсеры на месте? :D
Julian 🏳️‍🌈
curl может как-то вытянуть html и на лету перекодировать его?
Julian 🏳️‍🌈
Все, нашел iconv
Julian 🏳️‍🌈
iconv -f cp1251 -t utf8 /Video/somefile.srt -o /Video/subtitles.srt
Julian 🏳️‍🌈
Аля такого
Julian 🏳️‍🌈
Ну я за флаги спрашивал, мб кто юзал
Julian 🏳️‍🌈
Лень было в мане красноглазить
Yar
Лень было в мане красноглазить
man curl Жмякаешь \ ( то ли /, с телефона не вспомню) и вбиваешь кейворды
Yar
ну, смотря какой пейджер используется. На сколько помню, в убунте less(или more)
Sergey
Всем привет! Есть два компьютера в пределах одной локальной сети. На оба компьютера одновременно поступает команда, но выполнится она должна только на одном из них. Как это можно сделать? Я пока смотрю в сторону алгоритма raft, планирую сделать его реализацию используя twisted, но текущая программа представляет собой виндовую службу с синхронным кодом - не придумал пока как это все красиво подружить.
@Dragos
Привет. Подскажите в чем проблема. Декоратор не считает время - при первом запуске выдал рез , каждый последующий всегда нули в формате 0:00:00 http://dpaste.com/0BCZP14
Anonymous
Используй time.monotonic() для вычисления дельты
Sergey
Зачем усложнять поставь http и nginx самый простой round robin решает твою проблему
Да, round robin - вполне решение. Но надо слушать команды от opc сервера.
@Dragos
Друзья - это обучение - то что вы говорите , я ещё не проходил...((
Sergey
Так что, увы не вариант
elessar
парни подскажите самые самые эвенты на территории снг по питону в 20 году))
Kirill
Нет, такого условия нет. Но локи - решение проходящее. Как лучше сделать?
Есть спец. решения для этого, такие как ZooKeeper, etcd и др. А можно банально использовать Redis
Sergey
Спасибо, попробую
Kirill
Если у тебя винда, то с Redis будет наверное проще, не уверен можно ли в винде запустить etcd
Sergey
Ок, попробую с redis. Спасибо ещё раз!
Kirill
Реализация локов через редис всяко есть готовая. Если и не в самом адаптере для редиса, то в сторонних пакетах точно.
Sergey
Тогда вообще отлично! А то я думал с нуля (почти) писать надо.
Sergey
А нельзя передавать команду через кафку?
А если она с двух машин одновременно придёт - не задублируется?
Tishka17
Эм. С двух машин одна команда на две машины?
Tishka17
Давай-ка подробнее
Sergey
Эм. С двух машин одна команда на две машины?
Да, команда на обе машины приходит идентичная. А выполнить надо только на одной из них.
Tishka17
На или с?
Sergey
На
Tishka17
Ну тогда норм
Tishka17
Правда тут вопросы: 1. Почему нельзя при отправке сообщений сразу решить на какой машине выполнять? 2. А что если машина выйдет из строя? Надо ли все равно команду выполнить на первой? 3. А не окажется ли завтра 10 машин?
Vitalii
Ребят, а кто то работает с kubernetes?
Sergey
Тут надо уточнить, что команды прилетают редко, реже чем раз в день. И скорость выполнения не особо важна, надо чтобы только выполнилось один раз и гарантировано. Поэтому, чем меньше сторонних сущностей - тем лучше. Но если проще всего через redis или Kafka - то я попробую.
Tishka17
Кафка выглядит перебором для такого
Seagull
Блин, такой спор про аннотации пропустил :(
Seagull
В догонку скажу, если не забанят конечно. Если ошибки нужно отлавливать только в рантайме и аттрибут_еррор нестрашны, то зачем виндузы сделали ts поверх js?!
Kirill
Тут надо уточнить, что команды прилетают редко, реже чем раз в день. И скорость выполнения не особо важна, надо чтобы только выполнилось один раз и гарантировано. Поэтому, чем меньше сторонних сущностей - тем лучше. Но если проще всего через redis или Kafka - то я попробую.
Хм, а вот условие "гарантированно выполнилось" локами как таковыми не предоставляется. Тут надо либо использовать "очереди" с подтверждением обработки "сообщения" + какой-то механихм дедупликации (например сохранять в базе дату выполненной команды и не запускать вторую с такой же датой (если команды раз в день приходят). Либо на "втором" сервере ждать пока не будет снят лок, и проверять что "первый" сервер действительно успешно выполнил команду. После этого либо завершать обработку, либо самому запускать обработку команды. В случае сихнронной реализации серверов получится, что оба сервера будут "заняты" пока идёт обработка команды.
Kirill
Если команды такие редкие. Можно просто сохранять их в базу данных (с уникальным ключём для дедупликации). И запускать "по крону" задачку (например раз в 10 минут), которая будет искать в базе ещё не выполненые задачи и выполнять их.
Kirill
Если в проекте уже есть база данных, то последний вариант выглядит как менее требовательный. Хотя он не исключает использования локов, т.к. запускать "крон" задачу надо на обеих серваках на случай если один из них "сломается".
Kirill
Тогда видимо придётся на "втором" сервере ждать "подтверждения", что задача была до конца выполнена на "первом", дабы быстро среагировать на поломку "первого".
Sergey
Вот очередь с подтверждением выглядит заманчиво, но вот как избавиться от потенциальных дублей. Опять же с помощью локов наверное. Но тогда уже и без очереди можно обойтись.
Kirill
А могут и оба "поломаться" 😊 И если "задачу" не сохранить куда-то, то она протеряется.
Kirill
Вот очередь с подтверждением выглядит заманчиво, но вот как избавиться от потенциальных дублей. Опять же с помощью локов наверное. Но тогда уже и без очереди можно обойтись.
При налии Рдиски, можно в принципе проэмулировать подобную очередь, заодно и с дедупликацией - просто сохранять в редиску задачку с каким-то уникальным ключём для дедупликации. Там же хранить статус её обработки, что бы в случае поломки обеих сервером можно было её найти и продолжить выполнение. Но это уже будет комплексная задачка. Вероятно в ней имеет смысл использовать готовые решения в виде Celery или dramatiq
Sergey
Про dramatiq не знал - сейчас почитаю. Спасибо!
Tishka17
Хм, а вот условие "гарантированно выполнилось" локами как таковыми не предоставляется. Тут надо либо использовать "очереди" с подтверждением обработки "сообщения" + какой-то механихм дедупликации (например сохранять в базе дату выполненной команды и не запускать вторую с такой же датой (если команды раз в день приходят). Либо на "втором" сервере ждать пока не будет снят лок, и проверять что "первый" сервер действительно успешно выполнил команду. После этого либо завершать обработку, либо самому запускать обработку команды. В случае сихнронной реализации серверов получится, что оба сервера будут "заняты" пока идёт обработка команды.
Ну вот SQS так и работает. Первый кто получил сообщение, делает его невидимым в очереди на 30 секунд (условно). Если за 30 секунд он его не удалит из очереди, его может получить другой
Fᴏʀᴅᴇɴ
привет в питоне есть библиотеки, позволяющие сделать такой же красивый вывод текста на экран, как например color.js? colorama выглядит немного грустно
Tishka17
Хз что за color.js
Tishka17
Colorama никакой магии не делает, просто юзает фичи твоей консоли
Tishka17
Жесть какая
Tishka17
И в чем проблема?
Fᴏʀᴅᴇɴ
Насколько я вижу, терминал линукса способен на кучу цветов А колорама использует как-то совсем мало
Tishka17
http://www.lihaoyi.com/post/BuildyourownCommandLinewithANSIescapecodes.html
Anonymous
Есть скрипт для удаления файлов, которые были созданы более 2 часов назад, но он не работает, как надо(не удаляет), в чем может быть проблема? async def check_for_old_files(loop): while True: files = glob.glob("/path_to_files/*") for _file in files: dt = datetime.fromtimestamp(mktime(time.localtime(os.path.getmtime(_file)))) if fabs((int(dt.hour)-int(now.hour))) > 2 and "JUSTaFiLe" in _file: os.remove(_file) await asyncio.sleep(7200, loop=loop)
Alex
то есть ты сравниваешь не время а “часы”
Tishka17
Особенно прекрасно, что это на асинкио
Mored
/whois
Anonymous