
Mr.WeB
07.03.2017
12:16:06
Python.org/downloads 3.4.6 последняя версия?

Маришка
07.03.2017
12:16:28

Mr.WeB
07.03.2017
12:20:54
Блин неправильно посмотрел

Igor
07.03.2017
13:25:35
гм. а подскажите по HTTP.
сервер (не мой) возвращает 404 с телом:
$ curl -i http://127.0.0.1:8000/test
HTTP/1.1 404 Not Found
Date: Tue, 07 Mar 2017 13:17:19 GMT
Connection: Keep-Alive
Content-Type: text/plain; charset=UTF-8
Transfer-Encoding: chunked
Keep-Alive: timeout=3
Custom 404 Not Found Message
но requests тела ответа упорно не видит:
r = requests.get('http://127.0.0.1:8000/test')
print(r.content) # пусто
при этом если запрашивать http://httpbin.org/404, то requests получает тело ответа нормально и данные совпадают с curl'овскими

Google

Pavel
07.03.2017
13:28:36

Igor
07.03.2017
13:28:45
уже попробовал! пустоту :)
readlines() кинет I/O on closed file

Pavel
07.03.2017
13:29:33
requests.get('https://api.github.com/events', stream=True) там еще параметры надо stream

Igor
07.03.2017
13:29:39
оооо
блядь, у меня ж мелькнула мысль что stream надо прокинуть из-за keep-alive
слушай, не, не прокатило
там просто сервер, на самом деле, не факт что отвечает по HTTP RFC, поэтому проблема может быть какая-нибудь специфическая
или мне лучше в @ru_python c таким?

Pavel
07.03.2017
13:35:09

wf
07.03.2017
13:43:19
Без content-length

Igor
07.03.2017
13:45:34
если TE - chunked, то content-length обязателен?

Google

wf
07.03.2017
13:45:51
Ну да

Igor
07.03.2017
13:46:07
спасибо, отправлю багу им :)
и в requests, похоже, тоже стоит
http://paste.ubuntu.com/24130890/
эмм
а точно?
> If a Transfer-Encoding header field (Section 14.41) is present and has any value other than "identity", then the transfer-length is defined by use of the "chunked" transfer-coding (Section 3.6), unless the message is terminated by closing the connection.
> All HTTP/1.1 applications that receive entities must accept the "chunked" transfer-coding (Section 3.6), thus allowing this mechanism to be used for messages when the message length cannot be determined in advance.
> Messages must not include both a Content-Length header field and a non-identity transfer-coding. If the message does include a non-identity transfer-coding, the Content-Length must be ignored.
здесь же как раз вроде получается non-identity transfer-coding (т.к. указан TE chunked)

wf
07.03.2017
13:53:34
В чанкед передаются данные после указания длины прямо в теле

Igor
07.03.2017
13:54:44
не понял :(
в теле == после хедеров?
а как там длина указывается в таком случае? о_О

wf
07.03.2017
13:57:52
После хедеров, теле идет длина блока потом после crlr идет сам блок и так может повторяться

Igor
07.03.2017
13:59:08
аа, да https://en.wikipedia.org/wiki/Chunked_transfer_encoding#Example
прикольно, спасибо
$ curl -iv --raw 'http://127.0.0.1:8000/test'
HTTP/1.1 404 Not Found
Date: Tue, 07 Mar 2017 14:04:28 GMT
Connection: Keep-Alive
Content-Type: text/plain; charset=UTF-8
Transfer-Encoding: chunked
Keep-Alive: timeout=3
1D
Custom 404 Not Found Message
0
нихуя не понимаю теперь :( вроде все корректно
ладно, пойду поищу способ urllib'овский эксепшн получить
хоть там данные возвращаются

wf
07.03.2017
14:07:22

Igor
07.03.2017
14:10:44
Согласен, и connection: close заодно
но я говорю, сервер не мой ) хотелось решить проблему самостоятельно

stonepig
07.03.2017
14:11:38
посоны, такой вопрос.
для того, чтобы засетить юзера надо сходить на три эндпоинта + засетить фейсбукового тестового юзера. следовательно надо сделать 4 запроса. правильней будет разбить эти все запросы на 4 отдельных файла (т.к. для каждого запроса нада генерить параметры и это все занимает около 50 строк) и создать один мэйн файл, в который импортить эти все 4 файла, выполняющие запросы или сделать один файл в котором описано тупо всё сразу?

wf
07.03.2017
14:12:45

stonepig
07.03.2017
14:12:58
или лучше сделать один файл с классом, в котором будут описаны все методы для создания юзера и создавать юзеров как объекты? т.к. юзеров может быть много

wf
07.03.2017
14:13:00
я насчитал 28 символов в теле

Google

wf
07.03.2017
14:13:46
1C
Custom 404 Not Found Message
0
примерно так должно быть )

Igor
07.03.2017
14:17:37
не, все правильно, httpbin.org/stream/3 тоже так возвращает

Dmitriy
07.03.2017
14:18:37

stonepig
07.03.2017
14:18:57
нет, через тестового юзера. я нашел такие качели https://github.com/kcbanner/facebook-test-users/blob/master/cli.py
хочу сделать падсибя
но суть не в этом

Igor
07.03.2017
14:19:19

stonepig
07.03.2017
14:19:27
вопрос был в том, стоит ли разделять это все на отдельные файлы или все пилить в одном?
я вот с ООП не очень дружу, но, думаю, что можно создать класс и генерить юзеров

stonepig
07.03.2017
14:19:44
как объекты

Dmitriy
07.03.2017
14:19:53
Это раз
Ну или твоим тимейтам

stonepig
07.03.2017
14:20:42

Dmitriy
07.03.2017
14:21:59
это что?
Эта штука позволит не использовать api для авторизации юзеров. Совсем. Типа заглушка для запросов

stonepig
07.03.2017
14:22:21
чет не совсем догоняю

Google

Dmitriy
07.03.2017
14:22:57
Ладно, забей

stonepig
07.03.2017
14:23:59
мне надо всего-то access_token фейсбучный от юзера
создал юзера - получил токен - провел тест - удалил юзера с сервера и с фейсбука
примерно такой план
ну я пока только создание юзера пилю, конечно. суть в чем, я сейчас все это делаю ручками - через клиента создаю юзера, получаю наш токен и иду в jmeter тестировать эндпоинты
хочу это все автоматизировать

Dmitriy
07.03.2017
14:26:19
Не обязательно авторизоваться на фейсбуке, ты же не фейсбук тестируешь

stonepig
07.03.2017
14:26:39
ну да, мне и не нужна авторизация, мне нужен юзер-токен

Dmitriy
07.03.2017
14:26:45
Вот если ты сам модуль авторизации тестируешь, тогда другое дело

Admin
ERROR: S client not available

stonepig
07.03.2017
14:26:53
юзерайди и юзертокен
в самом клиенте авторизация идет через фейсбук, поэтому юзер сеттится только так

Dmitriy
07.03.2017
14:28:02
Говорю же это дело можно симулировать

stonepig
07.03.2017
14:28:56
а можешь подробнее, на пальцах?

Артемий
07.03.2017
14:30:58
Нужно переодически асинхронно выполнять задачу на фоне в django.
Я немного погуглил нашел Celery, но мне кажется что есть полегче Фреймворк для этого
Можете что подсказать?
Просто единственное что мне требуется - это переодически делать get запросы к стороннему api, и ответ api отправлять группе

Eugene
07.03.2017
14:32:54
Django-rq?

Dmitriy
07.03.2017
14:33:05

stonepig
07.03.2017
14:35:13
ну, не совсем на пальцах, но спасибо. буду гуглить, т.к. пока сложновато вот это вот все
я саму логику мока не понимаю, как это работает

Google

Igor
07.03.2017
14:37:05
аааа пиздец
>>> self.sock.recv(1024)
'HTTP/1.1 404 Not Found\r\nDate: Tue, 07 Mar 2017 14:35:46 GMT\r\nConnection: Keep-Alive\r\nContent-Type: text/plain; charset=UTF-8\r\nTransfer-Encoding:
chunked\r\nKeep-Alive: timeout=3\r\nContent-Encoding: gzip\r\n\r\n0\r\n\r\n'
походу, заголовки клиента влияют на то, что вернёт сервер

stonepig
07.03.2017
14:43:35
бля, а где вообще ментора по автоматизации тестирования найти? можно за бабки. у меня столько вопросов и не хочу засерать чат
есть какие-то тематические разделы на форумах или что-то такое

Dmitriy
07.03.2017
14:44:48
На at.info посмотри

stonepig
07.03.2017
14:45:06
This site can’t be reached
at.info’s server DNS address could not be found.

Dmitriy
07.03.2017
14:45:46
http://automated-testing.info/

Anton
07.03.2017
14:54:17
не понимать ;(
ValueError: time data 'date_p' does not match format '%a, %d %b %Y %H:%M:%S %Z'
Fri, 23 Dec 2016 04:51:39 +0000
%a, %d %b %Y %H:%M:%S %Z
вроде же ок. не?

wf
07.03.2017
14:55:24

Anton
07.03.2017
14:55:34
бло )

wf
07.03.2017
14:55:44
))

Anton
07.03.2017
14:56:09
чот не варик ValueError: time data 'Fri, 23 Dec 2016 04:51:39 +0000' does not match format '%a, %d %b %Y %H:%M:%S %Z'

wf
07.03.2017
14:59:28
попробуй %z вместо %Z

Johnnie
07.03.2017
15:01:17
Language:
py3
Source:
import datetime
print(datetime.datetime.now().strftime('%a, %d %b %Y %H:%M:%S %Z'))
Result:
Tue, 07 Mar 2017 16:01:12

wf
07.03.2017
15:11:41
попробуй %z вместо %Z
не, оказ не проканает (( , strptime так не умеет,
ну можно попробовать тогда как то так
datetime.datetime.strptime(date_p[:-7], '%a, %d %b %Y %H:%M:%S')
но за зонами придется следить вручную ((

Anton
07.03.2017
15:21:12
да, так норм date_p[:-6], "%a, %d %b %Y %H:%M:%S"
на зоны плевать, в данном случае не критично
спс, гайз

Sergey
07.03.2017
16:09:45
Привет всем) кто на openedu сдал лабы за первую неделю?

John
07.03.2017
16:11:26
Эта группа больше не существует