
Igor
12.04.2017
06:45:46
точно не по одному

Genius
12.04.2017
06:45:56
а если ещё проще?)

Igor
12.04.2017
06:46:06
в плане - проще?

Genius
12.04.2017
06:46:08
первый раз сталктваюсь с этим

Google

Genius
12.04.2017
06:46:18
обьяснить

Igor
12.04.2017
06:46:19
проще объяснить или проще сделать?
инфу о каждом запросе, который отправляется на этот метод API, сохраняешь где-нибудь в памяти. или в простом как палка хранилище типа redis'а.
когда там накопится Nное количество запросов - побольше, тыщ десять, скажем - всех их скопом, одним INSERT-запросом, сохраняешь в БД
это будет в разы быстрее и эффективнее, чем каждый запрос херачить INSERT в таблицу
если, конечно, бд поддерживает такие запросы

Genius
12.04.2017
06:48:41
какую бд лучше использовать? SQ Lite подойдёт?

Igor
12.04.2017
06:49:11
если 1000 в секунду, я б че-нить помощнее взял типа postgresql
может, sqlite тоже справится
но 1000 в секунду - это серьезно, а sqlite - несерьезно :) имхо
ну, можно еще просто в лог-файлик писать
если много потоков/процессов, то наверн в файлики

Genius
12.04.2017
06:50:53
для postgresql ж сервер нужен?

Google

Igor
12.04.2017
06:51:09
ага
ну, ниче не мешает его локально поднять

Pavel
12.04.2017
06:51:15
а тебе бессерверное решение надо?
и эти запросы, они из одного процесса идут, или из разных?

Genius
12.04.2017
06:51:52
ну не то чтоб обязательно. мне вообще решение нужно.)

Igor
12.04.2017
06:51:53
хотя если бессерверное, то sqlite/файлы
зависит от того, че ты потом будешь с этими логами делать

Pavel
12.04.2017
06:52:27
и 1000 RPS - это круглые сутки, или бывают спады нагрузки?

Genius
12.04.2017
06:52:30
я если честно не знаю что с ними будет. это вся информация((
Павел мне всего лишь нужно сделать как в задании написано и всё. а как и что у них работает я не знаю)

Igor
12.04.2017
06:53:32
ну так может это.. уточнить?

Genius
12.04.2017
06:53:36
это ребята со стартапа какого то

Pavel
12.04.2017
06:53:45
И какое из них правильное - зависит от ряда условий.
А если "просто сделать" - ну так найди места в коде, где вызывается апи, да и добавь`open('log.txt', 'w').write('Calling the API\n')`

Genius
12.04.2017
06:55:20
думаю просто сделать нужно и всё

Pavel
12.04.2017
06:55:25
всё, таск закрыт, кому надо более точное решение - пусть задачу точнее ставит.

Genius
12.04.2017
06:55:54
ХМ. спасибо))

Agent
12.04.2017
06:59:45
Привет, пару вопросиков есть - чем вы посоветуете дебажить питон - инструментов ведь не один, какой все же лучше , и второй вопрос - если нужно вести maintain конкретной функции которая никак не объявляется в моём скрипте и у меня нет на руках полного кода где используется вывод этой функции и я не знаю что происходит с этими данными дальше - как отслеживать корректные ли данные в том что функция возвращает. Без написания костылей которые выводят оттуда инфу, есть ли специализированные инструменты которые по ходу выполнения скрипта показывают наполнение конкретных переменных и величин которые возвращает функция даже если она не объявлена?


Igor
12.04.2017
07:00:28
не один. дебаггеры в pycharm, vs code. стандартный pdb. надстройки над ним - ipdb и pudb. wdb с веб-интерфейсом.
> есть ли специализированные инструменты которые по ходу выполнения скрипта показывают наполнение конкретных переменных и величин которые возвращает функция даже если она не объявлена
если я правильно тебя понял, да, такие инструменты есть и они как раз называются IDE и дебаггеры %)

Google

Agent
12.04.2017
07:01:16
Понятно спасибо а то я всегда только в саблайме кодил)
IDE не юзал, а только пару раз простенький дебагер уже не помню какой но там точно не было того что мне сейчас нужно. Он показывал только где происходят ошибки

Solyar
12.04.2017
07:04:29

Igor
12.04.2017
07:04:36
%)

stonepig
12.04.2017
07:05:06
тяжело тебе будет без яиц-то

Solyar
12.04.2017
07:05:21

Artem
12.04.2017
07:05:25
зато с принтами, лел

stonepig
12.04.2017
07:05:28
а мог бы

Solyar
12.04.2017
07:05:32
Logging

Igor
12.04.2017
07:05:51
принты, логгинг, однохуйственно
logging - если есть желание поебаться и настроить (или если уже настроено), принты - если нету

Solyar
12.04.2017
07:07:36

Igor
12.04.2017
07:07:57
так-то да

stonepig
12.04.2017
07:08:03
мудрое решение

Solyar
12.04.2017
07:09:36
Братцы можете оценить ущербности кода?

b0g3r
12.04.2017
07:09:59
Показывай

Pavel
12.04.2017
07:11:00
Показывай
Приходит ветеринар к терапевту.
Терапевт:
— На что жалуетесь?
Ветеринар:
— Нет, ну так каждый может!

Ruslan
12.04.2017
07:11:24

b0g3r
12.04.2017
07:11:55

Google

Игорь
12.04.2017
07:12:03
https://gist.github.com/anonymous/7c958f76516d5453c16ecd7d5f3d99ca
Замечания поправил

Темный
12.04.2017
07:12:04

Igor
12.04.2017
07:13:02
cursor.execute('grant all privileges on %s.* to \
"%s"@"localhost" identified by "%s"'
% (name, user, secret))
1) привет, SQL-инъекции
2) можно форматировать симпатичнее, ща найду

Pavel
12.04.2017
07:13:14

Igor
12.04.2017
07:13:18
^ вон пример вчера писал

Solyar
12.04.2017
07:15:21
https://github.com/Diz100rM/pymsgbot/tree/development

Johnnie
12.04.2017
07:15:59
https://gist.github.com/anonymous/7c958f76516d5453c16ecd7d5f3d99ca#file-gistfile1-txt-L104 а зачем здесь while 1?
ну и обычно while True, когда бесконечный цикл

Agent
12.04.2017
07:16:43
Подскажите пожалуйста сайт где можно ментора найти?) помню ресурс был такой оставляешь заявку - типа биржа учеников и менторов

Igor
12.04.2017
07:17:05
mkdev.me

melancholiac
12.04.2017
07:17:13

Johnnie
12.04.2017
07:17:17
return False if os.path.exists(directory(servername)) else True
return not os.path.exists(directory(servername))

Agent
12.04.2017
07:17:19
Спасибо!

melancholiac
12.04.2017
07:17:39
написать итератор, который будет илдить бесконечно?

Johnnie
12.04.2017
07:18:15
return False if user in users else True
return user not in users
и т.д.

Solyar
12.04.2017
07:19:30
return user in user if user == user

Igor
12.04.2017
07:19:40

Johnnie
12.04.2017
07:20:01
if mysqldb == 'yes': тут я б добавил .strip().lower()

Google

Solyar
12.04.2017
07:20:02
а?
Лучше ссылочку полистай и скажи как вообще выглядит )))

Johnnie
12.04.2017
07:20:58
или if mysqldb.strip().lower() in ('yes', 'y', 'да', 'д')

Pavel
12.04.2017
07:21:56
практически к каждой функции можно написать замечание.
1-5 все функции get_ - рекурсия не нужна
6. create_db_user - sqli уже написали
7. check_user_exists - генератор и any()
8. check_db_exists - генератор и any()
9. check_quota_ftp - цикл не нужен
10 - check_len_pass - тернарный оператор не нужен
11 check_servername тернарный оператор не нужен
12 check_dbuser_exists - перепистаь на запрос select user where username=?
ну и т.д.

Johnnie
12.04.2017
07:22:40
и еще - mysqldb такое себе название для переменной с ответом yes

Pavel
12.04.2017
07:23:56
кстати, про нейминг функций тоже можно пару слов написать

Johnnie
12.04.2017
07:24:25
кстати, какой там лимит глубины рекурсии по дефолту? 1000?

Pavel
12.04.2017
07:26:16

Johnnie
12.04.2017
07:26:47
а потом вроде эксепшн и приехали
если уж прям нужно выпытать данные, то лучше там впилить этот while True:

Dmitriy
12.04.2017
07:27:33
Ибо нехуй. Можно словить переполнение стека

Johnnie
12.04.2017
07:28:03
ну маловероятно, что юзер сделает ошибку 1000 раз :) но все же
она тут нахуй не нужна эта рекурсия

Dmitriy
12.04.2017
07:28:20
В cpython вроде как защита от дурака

Pavel
12.04.2017
07:28:49
придумал. Надо сделать, чтобы если предыдущая операция окончилась успешно, то в конце PS1 был :), а если нет- :(

Igor
12.04.2017
07:28:58
ага, тож об этом думал

Dmitriy
12.04.2017
07:32:28
Кстати
$ pypy
Python 2.7.10 (bbd45126bc691f669c4ebdfbd74456cd274c6b92, Jul 26 2016, 12:19:53)
[PyPy 5.0.1 with GCC 6.1.1 20160621 (Red Hat 6.1.1-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>> import sys
>>>> sys.getrecursionlimit()
100
>>>>
Эта группа больше не существует