@ru_python

Страница 6421 из 9768
Tishka17
03.09.2018
07:51:51
Там все не так просто, похоже

Zhanat
03.09.2018
07:59:06
Там все не так просто, похоже
Да я подобную статью на стэке видел ранее, но она абсолютно не годилась для комплексных структур. Так как в сети в основном пишут в качестве решения простые структуры с int значениями. А что делать с многомерными массивами или разнотипными структурами умалчивается

Zhanat
03.09.2018
08:07:55
Вопрос адресую тем у кого был опыт разработки высоко-нагруженных сокет серверов. Какую библиотеку посоветуете чтобы работала с openssl и в перспективе могла обойти ограничение 10к? P.S. Сейчас есть решение через select, но почему то после рандомного количества соединений сервер перестает принимать входящие, помогает только перезапуск.

Google
Zhanat
03.09.2018
08:11:01
мб проблема в том, что у тебя ядро не затюнено под большое кол-во соединений?
Сервер на vps под 7 centos. Если со стороны провайдера ничего не делали то ось должна быть в стоке

Eldar
03.09.2018
08:11:38
крч тюнь ядро

Zhanat
03.09.2018
08:12:42
Странный момент что даже если оставить на некоторое время сервер и попытаться снова соединиться то ничего не выходит. Поэтому вариант с забитыми портами как-то не сходится

Alex
03.09.2018
08:12:45
проблема в том, что select может обрабатывать максимум FD_SETSIZE сокетов (обычно равно 1024)

Zhanat
03.09.2018
08:13:15
проблема в том, что select может обрабатывать максимум FD_SETSIZE сокетов (обычно равно 1024)
Я это делал, ставил 4096, но это вопрос времени и он снова фд забивает

Alex
03.09.2018
08:13:37
используй любую асинхронную библиотеку, работающую поверх epoll \ kqueue

например asyncio

Zhanat
03.09.2018
08:14:12
Поэтому решил что решать нужно более кардинально, с библиотекой. Но там беда с другой стороны, не удается подружить ее с openssl

Epoll

Alex
03.09.2018
08:14:32
как именно тебе нужно их "подружить" ?

Eldar
03.09.2018
08:14:40
но в конечном итоге проблема будет все равно в том, что ядро не затюнено и оно будет тупо резать соединения

Google
Zhanat
03.09.2018
08:16:08
как именно тебе нужно их "подружить" ?
Сервер нужен для двустороннего шифрования. У клиента свой сертификат и сертификат сервера. В сети что решения были схожи с https, работают только в одном направлении

Alex
03.09.2018
08:17:20
ты хотел сказать для аутентификации клиента

потому что шифрование там и так двусторонее

если вы используете TLS

а не городили свой велосипед

Tishka17
03.09.2018
08:20:29
Да
Проверяй сертификат по цепочке на nginx, через кастомный хэдер передавай в приложение его id и дальше уже обрабатывай как хочешь

Или не id, а fingerprint

Alex
03.09.2018
08:23:03
Да
https://www.electricmonk.nl/log/2018/06/02/ssl-tls-client-certificate-verification-with-python-v3-4-sslcontext/

Zhanat
03.09.2018
08:30:55
https://www.electricmonk.nl/log/2018/06/02/ssl-tls-client-certificate-verification-with-python-v3-4-sslcontext/
Я так реализовал, похожее решение https://privnote.com/YjBXoLsZ#RACEleuz3

Проверяй сертификат по цепочке на nginx, через кастомный хэдер передавай в приложение его id и дальше уже обрабатывай как хочешь
Насчет nginx сразу подумал, но решение имхо не самое красивое. Вопрос с заголовками и id меня не очень прильщает.

Hmirin
03.09.2018
08:42:25
Народ, кто-то писал скрипты для приставок mag250 или что-то подобное?

Dmitry
03.09.2018
08:44:00
Насчет nginx сразу подумал, но решение имхо не самое красивое. Вопрос с заголовками и id меня не очень прильщает.
Если ты собираешься хранить данные в БД, то пиши API-сервер и делай веб-морду

Dmitry
03.09.2018
08:46:29
Это само собой. Давно реализовано
Не тебе я хотел ответить, ой не тебе =)

Ruslan
03.09.2018
08:47:11
Вопрос: А есть живые свидетели удаленного исполнения и дэбага кода через PyCharm в среде Windows? Суть в том, что есть VM на которой есть PyCharm и VPN, и есть еще одна удаленная машина на которой нужно запускать скрипты. Доступ ко второй машине "тестовый стэнд" по RDP. Работать через RDP в PyCharm с задержкой 150-250 мс, это АД.... Хочеться работать с кодов прям внутри ВМ, а запускать скрипт на "тестовом стенде", но при этом смотреть, что он делает (дэбаг) на ВМ. Ссылки на гайды привествуются. Предложения сменить все на Linux нет. Всем спасибо.

Iliya
03.09.2018
08:47:54
Привет всем, что-то я туплю, тут надо либо как-то правильно жкранировать или правильно передать В общем вопрос такой У меня есть часто встреваемый кусок кода, хочу обернуть его в функцию Делаю я его после insert, чтобы проверить отработал ли инсерт и вставились ли данные а базу Вот код cursor.execute("select * from table where CONFIG_ID = '12345678'") res = cursor.fetchall() if res: print("done") else: print("not found") Хочу обернуть в функцию, чтобы было что-то вроде def check_copmlite_insert(CONFIG_ID): cursor.execute("select * from table where CONFIG_ID = 'CONFIG_ID'") res = cursor.fetchall() if res: print("done") else: print("not found") и дергать функцию передавая йе только цифры, но понятно что тут строки и ковычки и не очень все это понятно как рабоатет Подскажите пожалуйста

Dmitry
03.09.2018
08:49:22
"select * from table where CONFIG_ID = '{CONFIG_ID}'".format(CONFIG_ID)

или просто f"select * from table where CONFIG_ID = '{CONFIG_ID}'"

Google
Андрей
03.09.2018
08:53:14
Я не эксперт, но не рекомендуется использовать формат для запросов, воде как

Dmitry
03.09.2018
08:53:53
?? Eugene
03.09.2018
08:53:54
Ну если данные очищенные - почему нет

Iliya
03.09.2018
08:54:01
Да все равно не работает, я так раньгше пробовал, но думал может что не так делаю, тут тоже аналогичный пример кинули, пока не понятно

Dmitry
03.09.2018
08:54:21
но вопрос был, как подставить =)

?? Eugene
03.09.2018
08:54:42
А что может не работать

Андрей
03.09.2018
08:54:44
Через знак вопроса вроде

Dmitry
03.09.2018
08:54:45
Zhanat
03.09.2018
08:56:48
Why?
Сам как считаешь, какое более красивое решение, добавить nginx и делать решение по идентификации с заголовками и id, или сделать все в самом python?

Iliya
03.09.2018
08:59:52
Что значит все равно не работает. Какая ошибка или результат, какие входные данные
check_copmlite_insert(12345) def check_copmlite_insert(CONFIG_ID): cursor.execute("select * from table where CONFIG_ID = '{CONFIG_ID}'".format(CONFIG_ID)) res = cursor.fetchall() if res: print("done") else: print("not found") Error такой Traceback (most recent call last): File "orcl_db_test.py", line 79, in <module> check_copmlite_insert(123456) File "orcl_db_test.py", line 70, in check_copmlite_insert cursor.execute("select * from table where CONFIG_ID = '{CONFIG_ID}'".format(CONFIG_ID)) KeyError: 'CONFIG_ID' [Finished in 0.5s with exit code 1]

?? Eugene
03.09.2018
09:01:12
А ты заранее строку отформатируй, потом передай

Alex
03.09.2018
09:01:50
потому что это именованный параметр

так format() не работает

Iliya
03.09.2018
09:02:18
А ты заранее строку отформатируй, потом передай
в смысле, я же просто цифру передаю, и хочу чтобы она подставилась в запрос Вот - формат не вариант, а что можно использовать?

Alex
03.09.2018
09:02:24
и более того не нужно форматировать запросы через строковые операции

Google
Iliya
03.09.2018
09:02:57
Alex
03.09.2018
09:03:02
но так делать плохо

Iliya
03.09.2018
09:03:27
Alex
03.09.2018
09:03:33
нужно использовать возможности драйвера базы данных

в зависимости от того какой именно у тебя используется

в спецификации Python по подключению баз данных обычно используются ? плейсхолдеры

но некоторые драйвера от этой спецификации отступают

смотри документацию к библиотеке, которую используешь

Iliya
03.09.2018
09:04:41
Ну база у меня оракловая, а чтобы с ней рабоать в питоновском скрипте юзаю import cx_Oracle

madmonday.ru
03.09.2018
09:05:11
Почему у меня не работает copy.deepcopy()? Допустим код command = tools.get_attr_recursive(scripts, command_class_name) # command.name по умолчанию пуст # print(command.name) # "" self.commands[command_name] = copy.deepcopy(command) self.commands[command_name].name = command_name print(command.name, self.commands[command_name].name) # command.name == self.commands[command_name].name # True

Alex
03.09.2018
09:08:37
смотри второй и третий параметры

Cykooz
03.09.2018
09:11:31
По питонячему страндарту DB API делается вот так cursor.execute( 'SELECT * FROM table WHERE v = %s AND t = %(t)s', 10, t=20 )

Адаптер сам подставит значение в нужном виде, добавит кавычки если это строка, заэкранирует всё правильно

Cykooz
03.09.2018
09:19:30
Насколько знаю - все мейнстрим драйвера поддреживают, т.к. этому стандарту уже куча лет.

Eldar
03.09.2018
09:21:10
Не все БД и драйвера это поддерживают.
тогда надо отрывать руки создателям этих драйверов)

в любом случае не понятно, что мешает соответствовать DB-API 2.0

Dmitry
03.09.2018
09:37:03
Есть такая база - Clickhouse - у них основной интерфейс HTTP

те же самый select и insert отправляются пост запросами

Google
Cykooz
03.09.2018
09:38:04
Ну сравнил однако, нормальные реляционые базы, с "модной и молодёжной" NoSQL

Сергей
03.09.2018
09:40:09
Добрый день. Нужен питонщик для удаленной работы на постоянной основе для разработки кроссплатформенных проектов-ботов (серверные приложения). Для каждого проекта пишется подробное ТЗ с прототипами, проговариваются все тонкие моменты. На данный момент есть текущий начатый проект, есть ТЗ для него, нужно дописать функционал. Разработка ведется в git. Причина поиска нового разработчика: личные обстоятельства текущего, по которым уделяется мало времени проекту. Работа делится на несколько этапов, оплата по факту сдачи этапа, может быть хоть каждый день. Оплата желательно на карту сбербанка или другие ЭПС в РФ, т.к. переводы за пределы требуют большего времени и дополнительных комиссий. Нам нужен разработчик, который будет в будни по Мск на связи, оперативно исправлять баги, соблюдать (хотя бы не сильно затягивать) сроки. Проектов много, все они каким-то образом связаны с криптобиржами. Поэтому большой плюс тому кандидату, у которого есть опыт или интерес к подобным ботам. Ставка за час работы 700-800 рублей. Если сработаемся, то возможно повышение ставки до 1000 рублей и выше, в зависимости от вашего уровня. Либо можем оплачивать не по часам, а по объему работ за каждый этап - как вам удобнее. От нас всегда опреативная обратная связь, помощь, ответы на вопросы, своевременная оплата. Нам нужен ответственный человек в команду. Требуются знания: python, docker, redis, js. Текущая задача, доработать текущий проект. Еще 2 проекта на стадии написания ТЗ. Если ваши знания есть в yii2, то возможно подключение к большому международному проекту, тоже в сфере криптовалют. #работа

Eldar
03.09.2018
09:42:37
Dmitry
03.09.2018
09:43:56
Eldar
03.09.2018
09:44:27
да даже в http интерфейсе есть разделение на POST и GET, которые уже можно использовать для экранирования

Dmitry
03.09.2018
09:45:20
да даже в http интерфейсе есть разделение на POST и GET, которые уже можно использовать для экранирования
А кто спорит? Я просто не вижу проблемы в том, чтобы проставить параметры в запрос через формат, если все равно потом запрос экранируется

Cykooz
03.09.2018
09:45:22
Смотрю их доку - судя по всему у них нет "родного" драйвера для python

Только от сторонних разработчиков

Которые, видимо как многие вопрошающие тут, ни разу не слыхали про DB API

Eldar
03.09.2018
09:47:43
экранироваться запрос может по разному, вы от этого перестаете зависеть

Страница 6421 из 9768