
Tishka17
03.09.2018
07:51:51
Там все не так просто, похоже

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

Alex
03.09.2018
08:04:48

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

Google

Eldar
03.09.2018
08:09:42

Zhanat
03.09.2018
08:11:01

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

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

Eldar
03.09.2018
08:14:09

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, работают только в одном направлении

Tishka17
03.09.2018
08:17:17

Alex
03.09.2018
08:17:20
ты хотел сказать для аутентификации клиента
потому что шифрование там и так двусторонее
если вы используете TLS
а не городили свой велосипед

Zhanat
03.09.2018
08:18:10

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

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

Dmitry
03.09.2018
08:44:00

Zhanat
03.09.2018
08:44:54

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
Я не эксперт, но не рекомендуется использовать формат для запросов, воде как

Tishka17
03.09.2018
08:53:47

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?

Tishka17
03.09.2018
08:57:14
Вообще, он пошустрее ssl обрабатывает чем из питона

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
и более того не нужно форматировать запросы через строковые операции

Cykooz
03.09.2018
09:02:33

Alex
03.09.2018
09:02:53

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
)
Адаптер сам подставит значение в нужном виде, добавит кавычки если это строка, заэкранирует всё правильно

Dmitry
03.09.2018
09:18:45

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, то возможно подключение к большому международному проекту, тоже в сфере криптовалют.
#работа


Dmitry
03.09.2018
09:40:10

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

Cykooz
03.09.2018
09:45:22
Смотрю их доку - судя по всему у них нет "родного" драйвера для python
Только от сторонних разработчиков
Которые, видимо как многие вопрошающие тут, ни разу не слыхали про DB API

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