So you tried doing this on WebFaction rather than on your own system with just 
the files I gave you and running mod_wsgi-express directly?

Can you explain exactly what you did?

Graham

On 27/02/2015, at 9:37 AM, Paul Royik <[email protected]> wrote:

> [Thu Feb 26 19:58:06.587734 2015] [wsgi:info] [pid 27981:tid 139944202344192] 
> [remote 127.0.0.1:60] mod_wsgi (pid=27981, process='localhost:20241', 
> application=''): Loading WSGI script 
> '/home/simamura/webapps/django_math/express/handler.wsgi'.
> [Thu Feb 26 19:58:06.588460 2015] [wsgi:error] [pid 27981:tid 
> 139944202344192] [remote 127.0.0.1:60] mod_wsgi (pid=27981): Target WSGI 
> script '/home/simamura/webapps/django_math/express/handler.wsgi' cannot be 
> loaded as Python module.
> [Thu Feb 26 19:58:06.588470 2015] [wsgi:error] [pid 27981:tid 
> 139944202344192] [remote 127.0.0.1:60] mod_wsgi (pid=27981): Exception 
> occurred processing WSGI script 
> '/home/simamura/webapps/django_math/express/handler.wsgi'.
> [Thu Feb 26 19:58:06.588485 2015] [wsgi:error] [pid 27981:tid 
> 139944202344192] [remote 127.0.0.1:60] Traceback (most recent call last):
> [Thu Feb 26 19:58:06.588499 2015] [wsgi:error] [pid 27981:tid 
> 139944202344192] [remote 127.0.0.1:60]   File 
> "/home/simamura/webapps/django_math/express/handler.wsgi", line 71, in 
> <module>
> [Thu Feb 26 19:58:06.588522 2015] [wsgi:error] [pid 27981:tid 
> 139944202344192] [remote 127.0.0.1:60]     
> recorder_directory=recorder_directory)
> [Thu Feb 26 19:58:06.588530 2015] [wsgi:error] [pid 27981:tid 
> 139944202344192] [remote 127.0.0.1:60]   File 
> "/home/simamura/lib/python2.7/mod_wsgi/server/__init__.py", line 1124, in 
> __init__
> [Thu Feb 26 19:58:06.588544 2015] [wsgi:error] [pid 27981:tid 
> 139944202344192] [remote 127.0.0.1:60]     exec(code, self.module.__dict__)
> [Thu Feb 26 19:58:06.588551 2015] [wsgi:error] [pid 27981:tid 
> 139944202344192] [remote 127.0.0.1:60]   File 
> "/home/simamura/webapps/django_math/mathsite/mathsite/wsgi.py", line 27, in 
> <module>
> [Thu Feb 26 19:58:06.588564 2015] [wsgi:error] [pid 27981:tid 
> 139944202344192] [remote 127.0.0.1:60]     from django.core.wsgi import 
> get_wsgi_application
> [Thu Feb 26 19:58:06.588578 2015] [wsgi:error] [pid 27981:tid 
> 139944202344192] [remote 127.0.0.1:60] ImportError: No module named 
> django.core.wsgi
> 
> On Thursday, February 26, 2015 at 11:33:18 PM UTC+2, Graham Dumpleton wrote:
> The service script failed on startup most likely. You need to look back in 
> the Apache error log to see what failed when server was started.
> 
> Graham
> 
> On 27/02/2015, at 7:00 AM, Paul Royik <[email protected]> wrote:
> 
> I've got following error:
>   File "/usr/local/lib/python2.7/multiprocessing/managers.py", line 500, in 
> connect
>     conn = Client(self._address, authkey=self._authkey)
>   File "/usr/local/lib/python2.7/multiprocessing/connection.py", line 169, in 
> Client
>     c = SocketClient(address)
>   File "/usr/local/lib/python2.7/multiprocessing/connection.py", line 304, in 
> SocketClient
>     s.connect(address)
>   File "/usr/local/lib/python2.7/socket.py", line 224, in meth
>     return getattr(self._sock,name)(*args)
> error: [Errno 2] No such file or directory
> 
> Maybe I mixed directories? Is layout of files and code strict? 
> Code lies in the same directory, but it is not root directory.
> 
> On Thursday, February 26, 2015 at 3:00:09 PM UTC+2, Paul Royik wrote:
> Thank you very much for you response.
> I will explore it, however, it is hard fo me to imagine, how to insert my 
> long-running functions into manager class.
> 
> On Thursday, February 26, 2015 at 12:15:28 PM UTC+2, Graham Dumpleton wrote:
> You will need to install latest mod_wsgi from git repo as I made some tweaks 
> to make this easier.
> 
> So on your own personal system (not Webfaction) so you can experiment, do:
> 
>     pip install -U 
> https://github.com/GrahamDumpleton/mod_wsgi/archive/develop.zip
> 
> Now create three files.
> 
> The first called 'task-queue-client.py'.
> 
> This contains the following and is a simple WSGI hello world program.
> 
> import os
> 
> from multiprocessing.managers import BaseManager
> 
> class MyManager(BaseManager):
>     pass
> 
> MyManager.register('Maths')
> 
> sockpath = os.path.join(os.path.dirname(__file__), 'task-queue-manager.sock')
> 
> def application(environ, start_response):
>     status = '200 OK'
>     output = b'Hello World!'
> 
>     m = MyManager(address=sockpath, authkey='abracadabra')
>     m.connect()
> 
>     maths = m.Maths()
>     print maths.add(1, 2)
> 
>     response_headers = [('Content-type', 'text/plain'),
>                         ('Content-Length', str(len(output)))]
>     start_response(status, response_headers)
> 
>     return [output]
> 
> The second called 'task-queue-manager.py'.
> 
> import os
> 
> from tasks import MyManager
> 
> sockpath = os.path.join(os.path.dirname(__file__), 'task-queue-manager.sock')
> 
> try:
>     os.unlink(sockpath)
> except OSError:
>     pass
> 
> m = MyManager(address=sockpath, authkey='abracadabra')
> s = m.get_server()
> s.serve_forever()
> 
> And finally 'tasks.py'. This can't be in 'task-queue-manager.py' as can't 
> have functions you want to pickle in the service script because of how 
> mod_wsgi names modules.
> 
> import os
> import multiprocessing
> import multiprocessing.managers
> import signal
> import time
> import os
> 
> class TimeoutException(Exception):
>     pass
> 
> class RunableProcessing(multiprocessing.Process):
>     def __init__(self, func, *args, **kwargs):
>         self.queue = multiprocessing.Queue(maxsize=1)
>         args = (func,) + args
>         super(RunableProcessing, self).__init__(target=self.run_func,
>                 args=args, kwargs=kwargs)
> 
>     def run_func(self, func, *args, **kwargs):
>         try:
>             result = func(*args, **kwargs)
>             self.queue.put((True, result))
>         except Exception as e:
>             self.queue.put((False, e))
> 
>     def done(self):
>         return self.queue.full()
> 
>     def result(self):
>         return self.queue.get()
> 
> def timeout(seconds, force_kill=True):
>     def wrapper(function):
>         def inner(*args, **kwargs):
>             now = time.time()
>             proc = RunableProcessing(function, *args, **kwargs)
>             proc.start()
>             proc.join(seconds)
>             if proc.is_alive():
>                 print 'still alive'
> ...
> 
> -- 
> 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.

Reply via email to