Dmitry
result = re.sub(r'[^A-Za-z0-9_-]+', '', content)
Мне без замены надо. Либо да, либо нет.
Aleksandr
Мне без замены надо. Либо да, либо нет.
поменяй sub на fullmatch а из регулярки выпили ^
rukigaki
Ребят, помогите исправить код, чтоб он только разрешенные символы пропускал
Тебе же нужно, чтобы напротив твоих элементов стоял сам элемент, если есть совпадение и None, если совпадение отсутствует?
rukigaki
Или там где none вообще не должны выводиться?
rukigaki
когда ты ставишь \S, расчитывая, что будут игнорироваться пробелы и на этом все, то это не совсем так, пробел будет игнориться, но именно из-за него у тебя проходит !, а он вроде у тебе не стоит в разрешенных символах
rukigaki
так как \S - это все что угодно, кроме пробела
rukigaki
поэтому ! проходит
rukigaki
Ребят, помогите исправить код, чтоб он только разрешенные символы пропускал
и еще в своей функции удали две последние строки и поставь вот это if temp_result: return temp_result.string
rukigaki
делаешь много лишнего
rukigaki
зачем ставить условие на None, когда функция и так его вернет, если это не строка
Dmitry
зачем ставить условие на None, когда функция и так его вернет, если это не строка
Огромное спасибо за развёрнутый и понятный ответ😊
Patsy
Коллеги, использую aio-pika, для работы с rabbitmq использую connect_robust, чтобы происходил реконнект сообщения обрабатываю через метод IncomingMessage.process но, когда соединение рвется, то обрабатываемое сообщение теряется, как я понимаю из-за закрытия канала в коннекте робуст при реконнекте, почему то создает новый канал, а не поднимает старый В доке информации очень скудно, в гугл правильный запрос подобрать немогу(( Думал поискать в коде, но там не нахожу каких-то методов для гарантированной отпраки Подскажите, пожалуйста, как мне изменить обработку таким образом, чтобы сообщение точно отправилось, после восстановления соединения?
Patsy
Какая версия aio-pika?
7.2.0 (последняя)
Dmitry
7.2.0 (последняя)
Смотри, сама суть в следующем, ты не знаешь в какой момент у тебя рвется соединение, и я тем более, отправка сообщения в протоколе это отправка минимум трех фреймов (в зависимости от размера cообщения). Если у тебя орвется конект на последнем фрейме ты не знаешь принял последний фрейм брокер или нет.
Dmitry
По умолчанию. в aio-pika включены publisher confirms. И когда ты делаешь await exchange.publish(...) пока от брокера не придет подтверждение о приеме сообщения ты на пойдешь из этого `await`а дальше
Dmitry
Но если у тебя рвется соеднинение, другого способа тебе сказать о том что "что-то пошло не так" просто нет, кроме как послать тебе в этот await исключение.
Dmitry
То есть если ты попал в такую ситуацию, когда тебе брокер на отпраке сказал что конект помер, тебе нужно самому решать, пробовать отправить еще, или действовать как-то иначе, в зависимости от логики твоего приложения.
Dmitry
НО, там как и везде есть баги, и я надеюсь до осени допилю aio-pika 8.0, где много рефакторинга
Dmitry
С точки зрения брокера нет никаких робастов, это чисто фича клиента.
Patsy
ого, вы, случайно, не Mosquito?
Patsy
То есть если ты попал в такую ситуацию, когда тебе брокер на отпраке сказал что конект помер, тебе нужно самому решать, пробовать отправить еще, или действовать как-то иначе, в зависимости от логики твоего приложения.
если правильно улавливаю, то, например, окружив while с try/except момент exchange.publish пытаться снова и снова. вроде бы хорошо, но тогда, не совсем понимаю, при реконнекте, канал будет пересоздан и мне, по идее, нужно снова получить объект exchange, и я не смогу уже его прокинуть в цикл с отправкой, как бы я мог выйти из этого порочного круга?
Patsy
Ну типа того
Мое почтение! Очень полезная и по сути единственная aссинхронная библиотека для кролика
Patsy
Там ты когда создаешь exchange, на самом деле ты создаешь RobustExchange и в него посетится новый конект после успешного реконекта. Объект при этом останется тот-же
да, там я видел подмену классов в зависимости от коннекта но тогда такой вопрос, может я изначально не правильно готовлю. когда я хочу отправить сообщение, то обменник я получаю таким образом (по сути каждый раз запрашиваю у канала) async def get_exchange_async(self) -> Exchange: if not self._exchange: channel = await self.get_channel_async() if self.rabbitmq_exchange_type: self._exchange = await channel.get_exchange(self.rabbitmq_exchange_type) else: self._exchange = channel.default_exchange return self._exchange но ведь канал каждый раз создается новый и мне нужно при реконнекте получается пересоздать канал? я правильным путем иду? или можно/нужно один раз создать обменник и внутри него во время реконнекта канал подменится на нужный (новый)?
Patsy
Можешь один раз взять не обязательно каждый раз
спасибо большое за ликбез и подробные ответы 🙏
Patsy
попробуй запустить под отладчиком и посмотреть, что в переменной лежит во время выполнения. может быть, у тебя в label_with_image объект не создался
Patsy
По умолчанию. в aio-pika включены publisher confirms. И когда ты делаешь await exchange.publish(...) пока от брокера не придет подтверждение о приеме сообщения ты на пойдешь из этого `await`а дальше
позвольте еще вопрос, не сразу понял, что у меня проблема чуть раньше началась я делаю так: async with message.process(ignore_processed=True, reject_on_redelivered=True): result = await some_logic(message.body) await exchange.publish(result, ..) соединение рвется во время выполнения some_logic и до отправки еще не дошли по идее с флагом ignore_processed исключение не должно влиять на обработку сообщения, но обработка прерывается с логом Reject is not sent since channel is closed как я могу это предотвратить? если это важно, обрыв соединения я эмулирую остановкой контейнера с rabbit
Anonymous
Ребята, помогите кто-нибудь чем-нибудь, пожалуйста. Долго уже мучаюсь У меня траблы с отображением формы. В qt designer все аккуратненько, красиво, а в pycharm вот что
Anonymous
Ага, фото нельзя отправить
Anonymous
А в Pycharm всё плохо. Окно меньше, чем нужно, текст в окне не весь отображается
Всем привет, подскажите как разархивировать «.zip» файл через python код, выдаёт ошибку везде «Файл не найден», заранее спасибо 😉
Alexander
Путь правильный
Значит неверный формат
Alexander
Указывай путь с помощью os.path чтобы наверняка
Vladimir
привет, наверное так работает cryptsetup, не поддерживает интерактивный ввод? может попробовать без sudo?
Всем привет, как решить ошибку? Не могу понять: AttributeError: partially initialized module 'pyautogui' has no attribute 'screenshot' (most likely due to a circular import)
Null
get_ip может возвращать не одно значение?
А я как делал по твоему? :)
Я просто переименовал файл, и заработало
Shieldy
(10 + 9) @torrentxok, пожалуйста, отправьте решение указанной арифметической задачи в этот чат в течение указанного времени, иначе вы будете кикнуты. Спасибо! (20 сек) При поддержке 1inch Network
Денис
Кто сталкивался с этой ошибкой? PermissionError: [WinError 32] Процесс не может получить доступ к файлу, так как этот файл занят другим процессом: 'C:\\Users\\denis\\AppData\\Local\\Temp\\tmpi1vg5xjv' Как вы ее решили? (раньше такого не было)
Денис
У меня виндувс, обычный ехобот
Alexey
В смысле?
С админ правами
Денис
С админ правами
Обычный Питоновский файл?
Alexey
Обычный Питоновский файл?
Ты в консоли запускаешь? Запусти консоль от админа
Денис
Без консоли
Денис
Sublime text ctrl+b
Alexey
Sublime text ctrl+b
Ну запусти саблайм с админом
Денис
Не получилось
Денис
Та самая ошибка
Alexey
Та самая ошибка
Ошибку гуглил?
Денис
Ошибку гуглил?
толкового ответа нету
Денис
у многих она есть, но чтобы решить нету
Alexey
у многих она есть, но чтобы решить нету
Можешь не на винде запускать, будет норм
Иван
Скорее всего твоя же программа висит в фоне с правами на запись и не дает открыть файл
Денис
Когда запускаю
Денис
эти же проги выскакивают и закрываются и ошибка та
Иван
Не запуская свой скрипт поищи процесс использующий этот файл и убей его
Денис
я себя убить уже хочук
Иван
Перезагрузи компьютер
Денис
Не запуская свой скрипт поищи процесс использующий этот файл и убей его
раньше так баловался, что аж комп пришлось переустонавливать
Денис
мне просто интиресно, почему раньше такого не было, а сейчас БАЦ!
Alexey
я себя убить уже хочук
вот до чего винда людей доводит
Денис
вот до чего винда людей доводит
ты после долгой устоновки должен ее еще настривывать час
Андрей
1$ вот это ты щедрый