Ich versuche eine Funktion zu schreiben, die einen HTTP Download mit einem Timeout kombiniert. Dabei sollen außerdem die Verbindungen gecached werden. Die Lösung mit eventlet habe ich fürs erste aufgegeben, weil ich die Fehlermeldungen nicht deuten konnte, die ich in meinem Programm bekam. Nun versuche ich es erst Mal mit multiprocessing, auch wenn es nicht so schön ist.
Beim Zuweisen einer HTTPConnection an mein multiprocessing dict bekomme ich bei mir einen Fehler:
PicklingError: Can't pickle httplib.HTTPConnection: it's not the same object as httplib.HTTPConnection
Ich habe versucht das Problem nachzustellen, bekomme dabei aber noch einen anderen Fehler mit dem ich nichts anfangen kann:
Code: Alles auswählen
import httplib
from multiprocessing import Manager
from multiprocessing import Process
manager = Manager()
conn_pool = manager.dict()
def f():
conn_pool[1]=httplib.HTTPConnection("www.google.de")
p = Process(target=f, args=())
p.start()
Code: Alles auswählen
Process Process-2:
Traceback (most recent call last):
File "/usr/lib/python2.6/multiprocessing/process.py", line 232, in _bootstrap
self.run()
File "/usr/lib/python2.6/multiprocessing/process.py", line 88, in run
self._target(*self._args, **self._kwargs)
File "test.py", line 10, in f
conn_pool[1]=httplib.HTTPConnection("www.google.de")
File "<string>", line 2, in __setitem__
File "/usr/lib/python2.6/multiprocessing/managers.py", line 722, in _callmethod
self._connect()
File "/usr/lib/python2.6/multiprocessing/managers.py", line 709, in _connect
conn = self._Client(self._token.address, authkey=self._authkey)
File "/usr/lib/python2.6/multiprocessing/connection.py", line 149, in Client
answer_challenge(c, authkey)
File "/usr/lib/python2.6/multiprocessing/connection.py", line 383, in answer_challenge
message = connection.recv_bytes(256) # reject large message
EOFError
Thx,
Boa