Server IP : 85.214.239.14 / Your IP : 3.149.255.208 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /usr/share/doc/uwsgi-core/tests/ |
Upload File : |
import gevent import gevent.socket import sys import uwsgi from uwsgidecorators import * if 'gettotalrefcount' in sys.__dict__: REFCNT = True else: REFCNT = False @signal(17) def hello(signum): print("hello i am signal %d, i am here because the background job is finished" % signum) if REFCNT: print(sys.gettotalrefcount()) @timer(10) def ten_seconds(signum): print("10 seconds elapsed, signal %d raised" % signum) if REFCNT: print(sys.gettotalrefcount()) @filemon('/tmp') def tmp_modified(signum): print("/tmp has been touched, i am the greenlet %s running on worker %d" % (gevent.getcurrent(), uwsgi.worker_id())) if REFCNT: print(sys.gettotalrefcount()) def bg_task(): for i in range(1,10): print("background task", i) gevent.sleep(1) # task ended raise a signal !!! uwsgi.signal(17) def long_task(): for i in range(1,10): print(i) gevent.sleep() def application(e, sr): sr('200 OK', [('Content-Type','text/html')]) t = gevent.spawn(long_task) t.join() yield "sleeping for 3 seconds...<br/>" gevent.sleep(3) yield "done<br>" yield "getting some ips...<br/>" urls = ['www.google.com', 'www.example.com', 'www.python.org', 'projects.unbit.it'] jobs = [gevent.spawn(gevent.socket.gethostbyname, url) for url in urls] gevent.joinall(jobs, timeout=2) for j in jobs: yield "ip = %s<br/>" % j.value if REFCNT: print(sys.gettotalrefcount()) yield "%d" % sys.gettotalrefcount() # this task will goes on after request end gevent.spawn(bg_task)