
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?
в цикле с проверкой на не пустые данные, всё равно в таймаут уходит

Марк
15.10.2016
17:16:24

Anna
15.10.2016
17:16:53
вот для таких данных [16.275452344290215, 16.116328869426994, 16.647470030726613, 0.82908982623079508, 9.9182294582706305, 17.747194890124909, 22.023371966522131, 21.750659312690452, 15.777458499392949, 5.6320448466649466, 6.4728624366908392, 16.215675744652806, 23.367890545187716, 13.409453798510611, 13.972016080256168, 3.5763968019321055, 13.85954795177139, 17.069628119097786, 12.884994958580933, 5.4753171665693685, 5.5623132215797, 4.9362035016663413, 11.895926584665318, 5.6344562408003895, 1.5041763752909976]
гистограмма-то зачем

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

Pavel
15.10.2016
17:18:50

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

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
при удп таких вопросов бы не возникло

Pavel
15.10.2016
17:30:16

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

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'' должен быть разумеется)

Alex
15.10.2016
17:56:09

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

Igor
15.10.2016
17:59:06

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

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

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

Igor
15.10.2016
17:59:42

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
вай?
хедеры, правда, отдельно получать там надо, похоже
Эта группа больше не существует