我正在尝试实施数据处理模块。
情景是,
外部URL只接受POST请求。
请建议我将此POST数据发送到外部网址的方法。
更新
根据建议,我开始使用请求。
在我收集初始POST数据的视图中,我正在使用用户发布的数据(处理后)编译另一个数据对象,并向对象添加更多数据并按照下面的方式执行发布请求
req = requests.post(post_url, data=post_obj)
返回的status_code是200 但是数据(post_obj)似乎没有发送到post_url。 post_url提示它没有收到POST数据。
当我检查req对象时,
req.request.data似乎有post_obj信息,而req.request.url有post_url
req.url有redirect_url,提示post_url没有收到任何数据。
我的问题是,
如何实际发布数据? 需要在视图中返回的对象是什么?
如果我发布数据的方式(requests.post方法)是错误的。请以适当的方式建议我。
注意:将数据发布到post_url后,它将被重定向到另一个页面。
答案 0 :(得分:2)
使用Urllib2,mechanise或requests(所有人都使用urllib2和httplib中内置的pythons)或pycurl(使用libcurl)向外部发帖资源。
请求是最容易使用的,机械化非常适合填写表单和编程,如浏览器,urllib2是底层库,所以知道并且pycurl(imo)是最后的手段,因为没有特别维护
您应该考虑使用队列来处理服务器 - >第三方步骤,然后异步向用户报告任务已完成,否则如果您的第三方应用程序需要很长时间才能响应,您可能会面临计划连接时间的问题。
答案 1 :(得分:0)
您可以使用标准库urllib2进行第二次POST。
我也听说过有关requests library的好消息,它比urllib2更容易使用。