I mean how can I protect the socket from concurrent use? Am Dienstag, 3. März 2015 13:08:58 UTC+1 schrieb Stefan Rink: > > Yes it is shared between multiple requests. Could you give me a hint how > that can be accomplished? > > Many thanks again!!! > > > Am Dienstag, 3. März 2015 12:59:06 UTC+1 schrieb Graham Dumpleton: >> >> To use socket.makefile, the socket must be in blocking mode (it can not >> have a timeout). Is this the case? >> >> To what extent is the socket visible/usable from multiple request >> threads? If it is shared, how are you protecting it from concurrent use? >> >> Although CherryPy WSGI server may also use multithreading, the dynamics >> of how threads are used in mod_wsgi daemon mode could well be quite >> different. So if is a multithreading issue, you may simply have been lucky >> and not encountered it yet on CherryPy WSGI server. >> >> So just to rule it out, explain whether this one socket can be used from >> different request threads and different times and if so how that usage is >> protected. >> >> Graham >> >> On 03/03/2015, at 10:52 PM, Stefan Rink <[email protected]> wrote: >> >> self.f is the result from calling socket.make_file >> I just don't know why this is working only with one thread under flask >> and mod_wsgi. On flask-dev-server and on CherryPy standalone it also works. >> And CherryPy is also multithreaded. >> >> Am Dienstag, 3. März 2015 12:36:34 UTC+1 schrieb Graham Dumpleton: >>> >>> What is the type of the 'self.f' object? >>> >>> You talk about having a 'socket file', but sockets don't have a proper >>> file like object interface. >>> >>> If you were somehow trying to wrap a file like object interface around a >>> socket, that could cause issues. This is because a read on a socket can >>> return partial results so the error may be the result of trying to decode >>> incomplete data. >>> >>> What you would need to ensure you are doing is read the full message >>> from the socket first, wrap that in a StringIO object and then feed that to >>> pickle.load(). >>> >>> Graham >>> >>> On 03/03/2015, at 10:23 PM, Stefan Rink <[email protected]> wrote: >>> >>> Hello Graham, >>> >>> i get this error and sometimes pickle.load gives an empty string. >>> The other process dumps data into the socket file that I load >>> result = pickle.load(self.f) >>> File "/usr/lib/python2.7/pickle.py", line 1378, in load >>> return Unpickler(file).load() >>> File "/usr/lib/python2.7/pickle.py", line 858, in load >>> dispatch[key](self) >>> File "/usr/lib/python2.7/pickle.py", line 1138, in load_pop >>> del self.stack[-1] >>> IndexError: list assignment index out of range >>> >>> Sorry I cannot provide more but have no clue why this is going wrong. >>> Thank you for your time. >>> >>> >>> Am Dienstag, 3. März 2015 12:01:48 UTC+1 schrieb Graham Dumpleton: >>>> >>>> Can you go back and explain and provide the actual details of the error >>>> message you are getting. If I can see the actual error messages then it >>>> might be more obvious. >>>> >>>> Graham >>>> >>>> On 03/03/2015, at 8:49 PM, Stefan Rink <[email protected]> wrote: >>>> >>>> Hello Graham, >>>> >>>> thank you very much for your answer. >>>> >>>> Only standard Python types are pickled: dicts, bytestrings. It works >>>> only when using a single thread in the WSGIDaemonProcess directive! Is >>>> that >>>> helping? >>>> >>>> Thank you >>>> >>>> >>>> Am Dienstag, 3. März 2015 09:58:11 UTC+1 schrieb Graham Dumpleton: >>>>> >>>>> >>>>> On 03/03/2015, at 7:10 PM, Stefan Rink <[email protected]> wrote: >>>>> >>>>> > Hello Graham, >>>>> > >>>>> > under mod_wsgi I get pickle errors when pickling over a socket to >>>>> another process (no Apache child). Can this be caused by mod_wsgi? >>>>> > mod_wsgi is in Daemon Mode. >>>>> >>>>> The only restriction I really know of which is specific to mod_wsgi is >>>>> that you cannot pickle types which are defined in the WSGI script file >>>>> itself. You should ensure that any types are defined in separately >>>>> importable modules on the Python module search path. Those same modules >>>>> with the types in them should also be importable in the application the >>>>> data is being sent to so they are available when unpicking the data. >>>>> >>>>> For more information about the destruction I talk about see: >>>>> >>>>> http://code.google.com/p/modwsgi/wiki/IssuesWithPickleModule >>>>> >>>>> Graham >>>>> >>>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "modwsgi" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To post to this group, send email to [email protected]. >>>> Visit this group at http://groups.google.com/group/modwsgi. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>>> >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "modwsgi" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at http://groups.google.com/group/modwsgi. >>> For more options, visit https://groups.google.com/d/optout. >>> >>> >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "modwsgi" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at http://groups.google.com/group/modwsgi. >> For more options, visit https://groups.google.com/d/optout. >> >> >>
-- You received this message because you are subscribed to the Google Groups "modwsgi" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/modwsgi. For more options, visit https://groups.google.com/d/optout.
