【发布时间】:2016-06-10 20:58:03
【问题描述】:
我希望将 HTTP POST 或 PUT 的内容通过管道传输到进程的 STDIN。我正在使用 Klein 库并具有以下代码:
from klein import run, route
from twisted.internet import reactor, defer, protocol
import os
class CurlProcProtocol(protocol.ProcessProtocol):
def __init__(self, data):
self.data = data
def connectionMade(self):
self.transport.write(self.data)
self.transport.closeStdin()
def outReceived(self, data):
return 'got ' + str(data)
@route('/')
def home(request):
d = defer.Deferred()
reactor.spawnProcess(CurlProcProtocol(request.channel),
'/usr/bin/curl',
args=['curl', '-T', '-', 'ftp://localhost/test.txt'],
env={'HOME': os.environ['HOME']},
usePTY=False)
d.addCallback(reactor.run)
return d
run("localhost", 8080)
我正在努力解决的问题是我将Request 的哪一部分传递给我的CurlProcProtocol,然后又如何将它传递给self.transport?
【问题讨论】:
标签: python twisted twisted.web twisted.internet