2014-09-30 3 views
1

У меня есть простой вид следующим образом:Джанго вид ПОЛУЧАТЬ неполной POST полезной нагрузки

@csrf_exempt 
def stackcommits(request): 
    print request.body 
    return HttpResponse("") 

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

2014-09-30 18:47:21
<QueryDict: {u'payload': [u'{"zen":"Avoid administrative distraction.","hook_id":3103635,"hook":{"url":"https://api.github.com/repos/valeyard/SearchDemon/hooks/3103635","test_url":"https://api.github.com/repos/valeyard/SearchDemon/hooks/3103635/test","id":3103635,"name":"web","active":true,"events":["push"],"config":{"secret":"","url":"http://searchdemon.pythonanywhere.com/searchdemon/stackcommits/","content_type":"json","insecure_ssl":"0"},"last_response":{"code":null,"status":"unused","message":null},"updated_at":"2014-09-29T20:56:33Z","created_at":"2014-09-29T20:56:33Z"},"repository":{"id":24075885,"name":"SearchDemon","full_name":"valeyard/SearchDemon","owner":{"login":"valeyard","id":5278331,"avatar_url":"https://avatars.githubusercontent.com/u/5278331?v=2","gravatar_id":"","url":"https://api.github.com/users/valeyard","html_url":"https://github.com/valeyard","followers_url":"https://api.github.com/users/valeyard/followers",

2014-09-30 18:47:21
.github.com/repos/valeyard/SearchDemon/issues{/number}","pulls_url":"https://api.github.com/repos/valeyard/SearchDemon/pulls{/number}","milestones_url":"https://api.github.com/repos/valeyard/SearchDemon/milestones{/number}","notifications_url":"https://api.github.com/repos/valeyard/SearchDemon/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/valeyard/SearchDemon/labels{/name}","releases_url":"https://api.github.com/repos/valeyard/SearchDemon/releases{/id}","created_at":"2014-09-15T22:10:54Z","updated_at":"2014-09-24T17:12:44Z","pushed_at":"2014-09-29T20:42:34Z","git_url":"git://github.com/valeyard/SearchDemon.git","ssh_url":"[email protected]:valeyard/SearchDemon.git","clone_url":"https://github.com/valeyard/SearchDemon.git","svn_url":"https://github.com/valeyard/SearchDemon","homepage":null,"size":1172,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":true,"has_downloads":tr

Есть идеи? Мне сказали, что это не проблема инфраструктуры в PA, так что это, скорее всего, что-то на моем конце. Но я понятия не имею, что

+0

как вы размещаете? Не могли бы вы разместить какой-то код того, что/как вы отправляете. – awwester

+0

Да, конечно вещь, это Github webhook постов, я проверил, что Github посылает их должным образом с помощью следующих действий: http://requestb.in/qhgo7nqh?inspect вы можете увидеть полезную нагрузку, посылаемые Github там – user1079404

ответ

1

Я думаю, вы просто видите артефакт вырубки. Сообщение доставляется как один POST, но регистратор прерывает сообщение, потому что он слишком длинный. Вместо print сообщения (которое отправляет его в журнал сервера), используйте print >> sys.stderr, request.body и он появится в журнале ошибок без усечения.

1

Я полагаю, что ваш оператор печати усекает вывод str (request.body), который происходит неявно, но фактическое содержимое POST есть. Попробуйте следующее:

import pprint 

@csrf_exempt 
def stackcommits(request): 
    pprint.pprint(request.body) 
    return HttpResponse("") 
+0

Просто попробовал это, но все же, похоже, делает то же самое. Когда я делаю Github, используйте заголовок urlencode (как и для json), я, кажется, последовательно получаю 3 отдельных фрагмента, появляющихся в журнале сервера при печати. Я получаю начало, где-то посередине, а затем и конец запроса. Но есть много случайных недостатков между ними. Можете ли вы придумать какой-либо другой способ проверить, правильно ли сервер получает данные? – user1079404

Смежные вопросы