Ich erstellte Uploader von Tornadoweb auf einen anderen Server. Es blockiert den Prozess also muss ich warten, bis alle Upload-Prozess eine andere URL (ShowQueue Klasse) für den Zugriff auf fertig dies ist mein CodeTornadoweb Upload auf einen anderen Server Blocking-Prozess
def create_callback(encoder,fileurl):
encoder_len = encoder.len
queueupload[fileurl] = {}
queueupload[fileurl]["size"] = encoder_len
def callback(monitor):
queueupload[fileurl]["current"] = monitor.bytes_read
# print queueupload
# bar.show(monitor.bytes_read)
return callback
class ShowQueue(tornado.web.RequestHandler):
@gen.coroutine
def get(self):
self.write(tornado.escape.json_encode({'success':True,'queuelist':queueupload}))
class UploadFile(tornado.web.RequestHandler):
@gen.coroutine
def get(self):
fileurl=self.get_argument("fileurl", None)
taxo=self.get_argument("taxonomi", None)
try:
filename = fileurl.split("\\")[-1]
# print filename
encoder = MultipartEncoder({
'taxonomi': taxo,
'myFile': (filename, open(fileurl, 'rb'), 'text/plain'),
})
callback = create_callback(encoder,fileurl)
monitor = MultipartEncoderMonitor(encoder, callback)
if(taxo!=""):
arrtaxo = taxo.split("/")
taxo = ":".join(arrtaxo)
taxo = "/"+taxo
r = requests.post('http://192.168.123.123:8080/upload'+taxo, data=monitor,
headers={'Content-Type': monitor.content_type})
if fileurl in queueupload:
del queueupload[fileurl]
self.write(tornado.escape.json_encode({'success':True,'reason':r.json()}))
except Exception as e:
exc = 'Exception: %s %s' % (e, filename)
self.set_status(500)
self.write(json_encode({'success':False,'exception':exc}))
Wie erstelle ich Uploader Arbeit asynchron ohne alle Prozess zu blockieren und haben immer noch die Kontrolle zu abbrechen (Ich verwende Callback, um den Prozess abzubrechen, aber noch nicht implementiert)?
I verwenden mit offenem (fileURL, 'r') als f: body = f.read() response = Ausbeute httpclient.AsyncHTTPClient() .fetch ('http://192.168.174.129:8080/upload'+taxo,method= "POST", Header = {"Inhaltstyp": "text/plain"}, body = {"myFile": body}) aber ich habe Fehler erhalten Ausnahme: Erwartete Bytes, Unicode oder None; bekam –