LINUX.ORG.RU

Сообщения crarkie

 

Не работает swap.

Вообще ни в какую. Просто забивается RAM и виснет намертво. Кратко о ситуации: vm.swappiness = 60

swapon -s: /swapfile file 6291452 0 -2

free:

Swap: 6291452 0 6291452

В fstab: /swapfile none swap sw 0 0

uname -r: 5.0.0-23-generic

 , ,

crarkie
()

Fluter + A/G Pay.

Добрый день. Необходимо сейчас писать приложения. Под обе платформы сразу. Посматриваем на Flutter + Dart. Привлекает скорость разработки и возможность сэкономить на разработке сразу под обе платформы, а не под каждую по отдельности. В приложении также нужно внедрить оплату через Apple Pay, Google Pay. Знаю, что на сайтам реализуется без проблем все, в нативных (Kotlin/Swift) приложениях тоже. Но Вот по Flutter не нахожу толком никаких материалов или тем. Может кто сталкивался уже с подобным, и Flutter в частности? Интересен ваш опыт. P.S Приложения не шибко сложное. Пару экранов, взаимодействие с бекендом, оплата. По оплате также желательно иметь возможность создать подписки (т.е раз в месяц снимают столько то, с согласия пользователя и возможностью отмены). Но не критично.

 , ,

crarkie
()

Linux для ноутбука.

Добрый день. Взял себе Honor MagicBook 14. Поставил Ubuntu 19.10. Возникли некоторые проблемы. Во-первых иногда возникают графические артефакты. Если сделать resize окна, то они исчезают. Непонятно почему. Может кто сталкивался?

Ну и второе - после выхода из режима сна часто какие-то проблемы. Например, недавно отвалился тачпад.

Посему вопрос. На каком дистре линукса меньше всего проблем с ноутбуками?

 , ,

crarkie
()

Очереди задач, потоки, мультипроцессы.

В общем. Есть такая проблема. Нужно сделать систему для распределенного выполнения задач. Причем, задачи эти крутятся долго - могут день, два. И могут добавлятся, так и удалятся.

И вопрос, каким образом лучше сделать такую систему? Характер задач - много общение с БД, сторонними REST API + обработка входящих данных от REST API - проверка по условиям приходящих данных. Те в большей мере IO, но и CPU также есть.

Сейчас есть с горем пополам работающее решение (писало чудо-юдо до меня). Решение состоит в том, чтобы на каждую задачу плодить thread… Сейчас среднее количество таких задач подошло к 150 и решение это работает… Откровенно х$%@#.. В общем, надо переделывать.

P.S Сам пока думаю о asyncio, или redis + multiprocessing + asyncio. Второе не особо нравится из-за нежелания бороться с пересозданием connection и т.п проблем. В идеале бы 1000 таких задач без проблем держать. Сейчас в одном интерпретаторе через потоки 150 и все стало очень медленно. По ресурсам CPU решение не критично. Есть сервер на 32 ядра. Можно грузить хоть все.

 , ,

crarkie
()

Куча CLOSE_WAIT соединений

Добрый день! Возникла такая проблема в проекте. Используется requests для запросов. Создается отдельная Session и через нее делается куча запросов к API. Проблема состоит в том, что через некоторые время появляется очень много CLOSE_WAIT соединений и вылетает Too many open files. Увеличивать лимит - временное решение. Пробовал менять Keep-alive на Close. Не помогло. response.content читается. Как понимаю, urllib должен при этом сам закрыть соединение. Но что-то явно не то.

В какую сторону копать? В TCP не настолько силен.

 , ,

crarkie
()

Celery + Peewee

Пытаюсь сейчас использовать для отдельных задач Celery. Первая задача проходит нормально. На всех последующих сыпется: peewee.OperationalError: SSL error: decryption failed or bad record mac

ORM peewee. Пробовал гуглить. Особо полезного мало нашел. Судя по всему, какая-то проблема с переиспользованием соединений. Пробовал использовать базу с пулом соединений. На первой же ошибке валится, что соединение уже открыто.

 , , , ,

crarkie
()

Проектирование БД: наследование

Добрый день. Необходимо сейчас проектировать базу данных. И возникла такая задача: У нас есть в системе пользователи. У пользователей есть общие данные. А также ссылки на таблицу пользователей других таблиц. Но, при этом, сами пользователи могут различаться ролями. И, в зависимости от роли, у них разные дополнительные данные и ссылки из других таблиц. Как такое грамотнее будет реализовать, в т.ч точки зрения нормализации БД? Идея запихунть все в одну таблицу - не очень нравится. Пока есть следующие предположения - Выделяем общую таблицу User. И также отдельные таблицы с дополнительными данными для каждой нужной нам роли. Из этих таблиц unique foreign key на таблицу User. Но, как мы понимаем, unique будет работать только на таблицу конкретной роли, а не на все, что не всегда может быть хорошо.

 ,

crarkie
()

Python Peewee One-to-one

Собственно, кто работал с этой библиотекой, м.б подскажет, как тут сделать one-to-one связь? Т.е есть таблица и есть таблица на ее расширенные свойства. В каждой из таблиц должны быть ключи друг на друга. В SQAlchemy можно было просто использовать uselist=False. А тут есть только backref, как я понял. И создает он именно список.

Почему не взял SQAlchemy - peewee-async. Для SQLAlchemy ничего похожего не находил. Был, конечно, Gino для SQLA. Но я один раз взял его, намучался, и больше как-то не хочется.

P.S Прошу не разводить срач на тему Peewee vs SQAlchemy, а просто ответить, если кто использовал и знает.

 , , , ,

crarkie
()

Python 3 Потоки/Очереди задач.

Добрый день. Возникла сейчас необходимость писать API, при запросе к которому необходимо выполнять некоторые тяжелые вычисления. На выполнение одного уходит где-то 20-40 секунд. После результат отправляется по другим каналам (или в БД). Что лучше для такого использовать? Понятно, что асинхронщина не вариант из-за CPU work. Потоки? Просто тут GIL. Как вариант, субпроцессы. По сути, работа - запуск стороннего bash скрипта и получение результатов от него, так что субпроцессы должны сработать хорошо. Может для такого какие очереди задач будут лучше? Подумываю насчет Celery.

 , ,

crarkie
()

AMI BIOS, регулирование напряжения CPU

Добрый день всем. Взял процессор Ryzen 2600 и мать GIGABYTE B450M DS3H. Мать обновил до последней версии. Пытаюсь разогнать процессор. До 3.8 гонится без проблем. Дальше, видимо, нужно поднять напряжение процессора. Хотелось бы до 4.0. По охлаждению точно потянет. Ибо на 3.8 нагрева выше 55-58 не видел даже. Это при 100% нагрузки.

Но в BIOS напрочь отсутствует возможность задать напряжение процессора. RAM - без проблем. В опциях Voltage же - есть SOC и CPU, но там только какие-то «Dynamic». И значения изменить нельзя. Кто подскажет? Может, необходимо отключить какие-то опции, тогда регулировка вольтажа появится? Или это все-таки мать кастрированная? Хотя чипсет вроде как B450.

 , , , ,

crarkie
()

Как у дистров с AMD?

Добрый день. Сейчас хочу делать свою сборку нового ПК. Проц Ryzen 2600, видео Radeon RX570. Хотелось бы узнать у тех, у кого есть опыт уже, как в дистрах с поддержкой данного hardware? Нет ли мертвых подвисаний из-за проца, или тому подобного? И что по видеокарте? Драйвера хорошие? Интересует в первую очередь рендеринг в Blender. Ну и по дистрам что посоветуете? Где проще всего завести, без танцев с бубном?

 , ,

crarkie
()

Генерация CSV отчета на backend и отдача его клиенту на front

Добрый день. Возникла такая задача. Есть «самописная» веб-админка на VueJS и Backend на Flask. В админке можно ввести поисковый запрос и просмотреть по нему найденные документы, или же просмотреть записи отдельно по месяцам. Возникла необходимость сделать генерацию CSV отчета для клиента по нажатию на кнопку(т.е ему отдается готовый файл). Делаться это будет на стороне сервера. Но как грамотно реализовать отдачу этого файла? Т.е ждать, пока сервер сгенерирует и отдаст файл - явно не самая лучшая затея, думаю. Потому что просто случится большой отчет, а далее timeout и все сломается. Да и хочется сделать «по-грамотному». Правильно ли понимаю, что отдавать клиенту некий id, состояние которого будет проверяться через n-времени (допустим, 0.5 сек) и, когда отчет будет сформирован, просто отдавать прямую ссылку на него?

 , , ,

crarkie
()

Что выбрать для изучения?

Доброго времени суток всем. Пишу сейчас на Python + Flask + SQAlchemy. Иногда Django. Т.е по части backend. Появилось сейчас частичка свободного времени и захотелось попробовать что-то новое. Из того, что привлекает, есть на выбор Go или же C# + ASP.NET Core. Кто что посоветует? Особенно актуально от тех, кто писал и на том, и на том.

P.S Так же как обстоят дела в .NET с использованием Postgres? Или в целом по рынку стандарт MSSQL?

 , , ,

crarkie
()

Регулировка громкости на клавиатуре ноутбука залипает.

На новом ноутбуке возникла такая проблема - Если попытаться нажать FN + клавиши Увеличить звук/Уменьшить/Выключить, то после возникают будто бесконечные фантомные нажатия. И звук прибавляется до максимума/убавляется либо вкл/выкл постоянно. При это, если использовать FN с другими кнопками (яркость подсветки) или отдельно клавиши громкости(это F6-F8), то проблем никаких. Я правильно понимаю, что это какая-то програмная ерунда?

Screenfetch:

OS: Ubuntu 18.04 bionic
Kernel: x86_64 Linux 4.15.18-custom
Shell: zsh 5.4.2
Resolution: 1366x768
DE: XFCE
WM: Xfwm4

 , ,

crarkie
()

Sanic долго разрывает подключение

Сейчас балуюсь с асинхронным Sanic и возникла такая проблема - Если к нему делать запросы с keep-alive, то подключения долго закрываются (около 10-15 секунд) и в это время сервер просто не отвечает ни на один запрос. Причем, даже если в самом Sanic выставить KEEP_ALIVE=False. Если же делать запросы без keep-alive -то все нормально и быстро. Может кто с подобным сталкивался? Это баг или я что-то делаю не так?

P.S Да, я знаю, что перед ним можно поставить проксирующий Nginx. Вопрос не для того, чтобы получить такой ответ.

 , , ,

crarkie
()

Чат-боты: Модульная структура.

В общем. Необходимо сейчас писать бота для мессенджера со сложной структурой. В связи с чем возник вопрос, как грамотно организовать все, чтобы код был красивым, а не с кучей if-else, смешанных в каше(видел такие проекты - смотреть больно, трогать - смертельно)? Сейчас примерно выстроил следующее: у пользователя в базе данных хранятся соответствующие два поля - в одном хранится текущее действие(или функциональность), выполняемое в данный момент пользователем. Например, он находится в процессе заполнения заявки, или же просмотра списка заявок. Для каждого действия при поступлении сообщения от пользователя, из базы данных получаем текущее действие и создаем соотвествующий действию класс, и маршрутизируем обработку сообщения ему. Второе поле - статус в текущем действии. Его обрабатывает всегда соответствующий действию класс и использует для перехода между состояниями внутри себя. При переходе на другое действие, происходит сброс статуса в «start». При этом каждое действие должно обрабатывать этот статус всегда - по своему. Так как пишу на Python, неплохо бы все это дело обернуть в декораторы - для каждого state своя функция, обернутая декоратор. Из if-else останется только обработка в зависимости от конкретного ответа(message). Было бы неплохо получить отклик(сильно не пинать), либо советы.

 , ,

crarkie
()

Отключить дискретную видеокарту на AMD APU (A10-4600M)

Добрый день. Есть ноутбук, судя по всему с дохлой дискретной графикой. При запуске виснет намертво с

radeon: ring 0 test failed (scratch(0xC040)=0xCAFEDEAD)

С

radeon.modeset=0
грузится, но, понятное дело, интегрированная графика тоже не работает. Хотелось бы получить хотя бы аппаратное ускорение для видео. Тк декодить на процессоре совсем не очень (1080p на YT грузит на 80% камень.

glxinfo | grep -i opengl с radeon.modeset=0:

OpenGL vendor string: VMware, Inc.
OpenGL renderer string: llvmpipe (LLVM 6.0, 128 bits)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 18.0.5
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 18.0.5
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 18.0.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
OpenGL ES profile extensions:

В BIOS отключить графику нельзя - только UMA размер менять (выделенки из RAM)

 , , ,

crarkie
()

Asyncio обработка задач различного типа корутинами.

Добрый день. Возникла необходимость сделать следующее.

На старте мы запускаем, допустим, с десяток корутин. Их задача - брать из очереди задачи и выполнять их. Если же задачи нету, то тогда необходимо просто спать и отдавать управление в event loop. Но к самим задачам, которые мы добавляем, должен так же прибавлятся дополнительный 'тег'. Грубо говоря, метка. При запросе задачи из очереди, мы можем в параметрах передать тег или список тегов, по которым задачи возвращаться не должны. Как такое реализовать? Писать свою очередь? Как вариант - брать задачу из очереди, и если она не нужного нам типа, то тогда просто возвращать ее обратно в очередь. Но мне кажется, что это просто хак и будет работать он очень медленно, т.к перебирать задачи мы можем долго таким образом + гонять их туда-сюда. Второй вариант, приходящий в голову - использовать какие-либо примитивы синхронизации и создавать на каждый тип задачи отдельную очередь, уведомляя о ней корутины. Если сформулировать задачу более формально, то необходимо следующее - мы создаем кучу одинаковых задач, их может быть =< количество корутин. Все должны быть выполнены, но каждая корутина не должна взять больше одной задачи. Подвох в том, что в процессе получения задач из очереди, мы можем добавить еще туда одинаковых задач, но уже «другого» типа.

 , ,

crarkie
()

Pyrogram в Celery таске не закрывается.

Возникла такая проблема. Пробую написать обычный скрипт, который подключается к аккаунту телеги на Python, получает информацию обо мне и сразу закрывается:

client.start()
print(client.get_me())
client.stop()

Если же я пробую выполнить такое в Celery таске, то он корректно подключается и на этом зависает. Те печати информации обо мне нету, как и дисконнекта. Последние строчки лога -

[2019-02-17 00:51:32,234: INFO/ForkPoolWorker-2] Connecting...
[2019-02-17 00:51:33,712: INFO/ForkPoolWorker-2] Connected! DC2 - IPv4 - TCPAbridgedO
[2019-02-17 00:51:36,157: INFO/ForkPoolWorker-2] Session initialized: Layer 91
[2019-02-17 00:51:36,157: INFO/ForkPoolWorker-2] Device: CPython 3.6.7 - Pyrogram 🔥 0.11.0
[2019-02-17 00:51:36,158: INFO/ForkPoolWorker-2] System: Linux 4.15.0-43-generic (EN)
Можно ли как-то решить проблему. Как понимаю, проблема тут из-за Celery и асинхронности pyrogram. Но как решить не пойму

 , ,

crarkie
()

Проблема с Flask-Admin

Всем добрый день. Разбираюсь сейчас с SQLAlchemy и Flask-Admin. Возникла такая проблема, что я не могу сохранить в админке те записи, в которых есть отношения между записями. Если запись пустая, то выскакивает следующая ошибка:

TypeError: Incompatible collection type: None is not list-like

Если же выбрать запись, которая существует, то появляется следующее:

TypeError: Incompatible collection type: Session is not list-like

Разбираюсь уже часа 3 и не могу понять в чем дело. Пробовал менять модель. Отношение 1-к-1. Определено так:

session_id = Column(ForeignKey('session.session_id'), nullable=True, default=None)
session = relationship('Session', uselist=True)

 , ,

crarkie
()

RSS подписка на новые темы