@python_beginnersЭта группа больше не существует

Страница 569 из 1885
Johnnie
15.10.2016
17:04:49
а, то есть relationship как раз позволяет писать incidents = Incident.query.options(joinedload('employee')).all()

а без него надо было бы джойнить руками?

Zart
15.10.2016
17:05:07
да

орм нужен для того чтобы описать модель данных и её взаимосвязи. он автоматизирует рутину по переводу этой инфы в джойны и селекты под конкретную бд

Google
Igor
15.10.2016
17:08:41
и представляет строчки в бд как питоновские объекты и вот relationship как раз позволяет представить связанную модель (через foreignkey) как объект

class Parent(Base): __tablename__ = 'parent' id = Column(Integer, primary_key=True) child_id = Column(Integer, ForeignKey('child.id')) child = relationship("Child")

Johnnie
15.10.2016
17:12:33
спасибо, пойду дальше курить! :)

Alex
15.10.2016
17:14:31
ребят, как лучше из сокета все данные вытягивать? неужели велосипед в 20 строк писать нужно и нельзя что-нибудь вроде recvall?

в цикле с проверкой на не пустые данные, всё равно в таймаут уходит

Alex
15.10.2016
17:16:55
ну так его и использую, что же ещё?

Марк
15.10.2016
17:17:23
в цикле с проверкой на не пустые данные, всё равно в таймаут уходит
У тебя проблема в том, что пока нет данных, все зависает?

Alex
15.10.2016
17:17:53
нет, проблема в том, что я уже получил все данные, а цикл не прекращается пока socket.timeout не вываливается

Марк
15.10.2016
17:18:31
нет, проблема в том, что я уже получил все данные, а цикл не прекращается пока socket.timeout не вываливается
ЧТо мешает после получения данных выходить из цикла и закрывать сокет?

Alex
15.10.2016
17:18:52
а как из него выйти? как eof получитьГ

Google
Alex
15.10.2016
17:19:13
Pavel
15.10.2016
17:19:42
тогда как сокет узнает, что все данные кончились и пора выходить из цикла?

Марк
15.10.2016
17:19:43
нет, его закрывать мне нужно
Да ну тут проблем вообще быть не должно.

тогда как сокет узнает, что все данные кончились и пора выходить из цикла?
Если он знает формат сообщения, то это не проблема

Alex
15.10.2016
17:20:16
я ща не за компом, сек напишу как у меня

Zart
15.10.2016
17:20:27
эм

Pavel
15.10.2016
17:20:33
Если он знает формат сообщения, то это не проблема
если он знает формат, то тогда зачем цикл до eof?

Zart
15.10.2016
17:20:40
что такое recvall в этом сценарии?

Марк
15.10.2016
17:20:49
Alex
15.10.2016
17:22:19
data = '' pk = None while True: pk = s.recv(1024) if pk == '' break data += pk

вот так не получается

Zart
15.10.2016
17:22:35
а s у тебя нонблок?

Alex
15.10.2016
17:22:55
нет

только timeout стоит в него и сваливается

Zart
15.10.2016
17:23:22
data = ''.join(iter(lambda:s.revc(1024), ''))

логично же. '' прилетит лишь на еоф когда другая сторона закроет коннект

Alex
15.10.2016
17:25:50
тоесть setblocking и прокатит? recv значит ждёт данные пока не сокет не закрыт? ясно

Zart
15.10.2016
17:26:17
recv блочит пока не будет хоть какихто данных. но с заданным таймаутом вываливается

Alex
15.10.2016
17:26:31
данные равкой посылаются, поэтому модули отпадают, которые всё сами делают

Zart
15.10.2016
17:26:34
если же нонблок, то проверка будет вылетать сразу же если данных в буфере нет

Google
Zart
15.10.2016
17:26:43
какие модули...

Alex
15.10.2016
17:27:03
например httplib

Zart
15.10.2016
17:28:16
остапа несло

причем тут хттплиб?..

Alex
15.10.2016
17:29:20
при том, что мне нужно http запрос послать

Pavel
15.10.2016
17:29:29
кстати, я надеьюсь, там tcp сокет, а не udp?

Zart
15.10.2016
17:30:06
при удп таких вопросов бы не возникло

Alex
15.10.2016
17:32:05
люди такое городят: http://www.binarytides.com/receive-full-data-with-the-recv-socket-function-in-python/

Pavel
15.10.2016
17:34:08
правой кнопкой на любом сообщении и второй сверху пункт

работает только в супергрупах, афаир

Vladimir 〰
15.10.2016
17:34:49
работает только в супергрупах, афаир
Ясненько, спасибо за ответ !! =)

Pavel
15.10.2016
17:38:15
люди такое городят: http://www.binarytides.com/receive-full-data-with-the-recv-socket-function-in-python/
чего-то я не очень понял, какую проблему они решают.

Zart
15.10.2016
17:39:56
"s.recv(4096 , socket.MSG_WAITALL)" ээээ

Igor
15.10.2016
17:40:52
ыыы а если маленький запрос придет?

Zart
15.10.2016
17:41:07
маленький, гигов на 5?

Igor
15.10.2016
17:41:20
хотё бы!

Pavel
15.10.2016
17:42:28
ыыы а если маленький запрос придет?
мелкие запросы не нужны. подождём и свалимся с эксепшеном

Alex
15.10.2016
17:44:38
вот такие решения ещё: http://stackoverflow.com/questions/17667903/python-socket-receive-large-amount-of-data почему-то никто не написал про блок, странно, ща доберусь до компа, буду смотреть

Pavel
15.10.2016
17:52:24
чем плох зартовский однострочник data = ''.join(iter(lambda:s.revc(1024), ''))? Ну или развёрнутый вариант def recvall(sock): data = "" part = None while part != "": part = sock.recv(4096) data += part return data ? что за неведомая проблема решается?

Google
Zart
15.10.2016
17:53:45
(там b'' должен быть разумеется)

Pavel
15.10.2016
17:57:07
так такой код и есть, мы же порешили что он не пашет из-за блока
я так понял, что он не пашет, потому что ты не можешь закрыть сокет с другой стороны, а другого признака конца передачи нет.

Alex
15.10.2016
17:57:34
с другой стороны веб-сервер

Zart
15.10.2016
17:58:36
веб?...

он что, пишет свой урллиб без блекджека и шлюх?

Igor
15.10.2016
17:58:54
так, т.е. ты соответственно http-клиент, и пытаешься скачать файл?

Admin
ERROR: S client not available

Alex
15.10.2016
17:59:25
данные посылаются равкой, тоесть полный запрос

Zart
15.10.2016
17:59:28
крокодилгена.жипег

Alex
15.10.2016
17:59:33
совсеми хидерами

Zart
15.10.2016
17:59:45
что такое "равка"?

Leonid
15.10.2016
17:59:51
rav4

Igor
15.10.2016
17:59:59
ну.. любые http-запросы и http-ответы посылаются "со всеми хидерами"

Alex
15.10.2016
18:00:15
raw

Pavel
15.10.2016
18:00:30
возьми уже reqeuests, urllib, куча всего же уже написана.

Igor
15.10.2016
18:00:31
это понятно.

непонятно, что ты имеешь в виду.

Google
Alex
15.10.2016
18:00:55
забейте, когда нужно я пользую модули, но тут не тот случай

тут низко нужно

Pavel
15.10.2016
18:01:18
http://renotes.ru/content/public/upload/velosiped-iz-kostyley_0_o.jpg

Alex
15.10.2016
18:01:34
с ссл врапером и тд

Igor
15.10.2016
18:01:48
о_О

Pavel
15.10.2016
18:02:13
в заголовке http ответа есть (чаще всего) поле Content-Length. Можешь на него ориентироваться.

Zart
15.10.2016
18:02:41
теперь понятно почему он хттплиб упомянул...

его говнокод легко меняется на 2-3 строчки обычного урллиба2

Pavel
15.10.2016
18:03:25
Zart
15.10.2016
18:03:27
и наверняка на одну строчку реквестс, если не влом добавить зависимости

Pavel
15.10.2016
18:04:34
"это говнокод, но это мой говнокод".
Вроде Франклин Д. Рузвельт про кого-то там такое ляпнул.

Igor
15.10.2016
18:04:41
да, на одну :) edit: requests.get('http://httpbin.org/', stream=True).raw.read()

Alex
15.10.2016
18:08:39
к чему там гет? запрос не может быть post или put?

Igor
15.10.2016
18:08:44
может быть

почему нет

Zart
15.10.2016
18:08:54
пофиг, рилли

Igor
15.10.2016
18:09:04
ты можешь еще спросить, к чему тут http://httpbin.org/, че, не может быть я.ру какой-нибудь

Alex
15.10.2016
18:09:21
ну так это не солюшен

Zart
15.10.2016
18:09:26
ват?

Igor
15.10.2016
18:09:34
вай? хедеры, правда, отдельно получать там надо, похоже

Страница 569 из 1885

Эта группа больше не существует Эта группа больше не существует