-
Notifications
You must be signed in to change notification settings - Fork 242
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update CHANGELOG.MD and Pony version: 0.7.14-dev -> 0.7.14
- Loading branch information
Showing
2 changed files
with
132 additions
and
112 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,110 +1,110 @@ | ||
from __future__ import absolute_import, print_function | ||
|
||
import os, sys, time, threading, random | ||
from os.path import dirname | ||
from itertools import count | ||
|
||
__version__ = '0.7.14-dev' | ||
|
||
uid = str(random.randint(1, 1000000)) | ||
|
||
def detect_mode(): | ||
try: import google.appengine | ||
except ImportError: pass | ||
else: | ||
if os.getenv('SERVER_SOFTWARE', '').startswith('Development'): | ||
return 'GAE-LOCAL' | ||
return 'GAE-SERVER' | ||
|
||
try: from mod_wsgi import version | ||
except: pass | ||
else: return 'MOD_WSGI' | ||
|
||
main = sys.modules['__main__'] | ||
|
||
if not hasattr(main, '__file__'): # console | ||
return 'INTERACTIVE' | ||
|
||
if os.getenv('IPYTHONENABLE', '') == 'True': | ||
return 'INTERACTIVE' | ||
|
||
if getattr(main, 'INTERACTIVE_MODE_AVAILABLE', False): # pycharm console | ||
return 'INTERACTIVE' | ||
|
||
if 'flup.server.fcgi' in sys.modules: return 'FCGI-FLUP' | ||
if 'uwsgi' in sys.modules: return 'UWSGI' | ||
if 'flask' in sys.modules: return 'FLASK' | ||
if 'cherrypy' in sys.modules: return 'CHERRYPY' | ||
if 'bottle' in sys.modules: return 'BOTTLE' | ||
return 'UNKNOWN' | ||
|
||
MODE = detect_mode() | ||
|
||
MAIN_FILE = None | ||
if MODE == 'MOD_WSGI': | ||
for module_name, module in sys.modules.items(): | ||
if module_name.startswith('_mod_wsgi_'): | ||
MAIN_FILE = module.__file__ | ||
break | ||
elif MODE != 'INTERACTIVE': | ||
MAIN_FILE = sys.modules['__main__'].__file__ | ||
|
||
if MAIN_FILE is not None: MAIN_DIR = dirname(MAIN_FILE) | ||
else: MAIN_DIR = None | ||
|
||
PONY_DIR = dirname(__file__) | ||
|
||
shutdown = False | ||
|
||
shutdown_list = [] | ||
|
||
def on_shutdown(func): | ||
if func not in shutdown_list: shutdown_list.append(func) | ||
return func | ||
|
||
exception_in_main = None # sets to exception instance by use_autoreload() | ||
|
||
def exitfunc(): | ||
mainloop() | ||
_shutdown() | ||
if sys.platform == 'win32' and MODE == 'CHERRYPY' and exception_in_main: | ||
# If a script is started in Windows by double-clicking | ||
# and a problem occurs, then the following code will | ||
# prevent the console window from closing immediately. | ||
# This only works if use_autoreload() has been called | ||
print('\nPress Enter to exit...') | ||
raw_input() | ||
prev_func() | ||
|
||
if MODE in ('INTERACTIVE', 'GAE-SERVER', 'GAE-LOCAL'): pass | ||
elif hasattr(threading, '_shutdown'): | ||
prev_func = threading._shutdown | ||
threading._shutdown = exitfunc | ||
else: | ||
prev_func = sys.exitfunc | ||
sys.exitfunc = exitfunc | ||
|
||
mainloop_counter = count() | ||
|
||
_do_mainloop = False # sets to True by pony.web.start_http_server() | ||
|
||
def mainloop(): | ||
if not _do_mainloop: return | ||
if MODE not in ('CHERRYPY', 'FCGI-FLUP'): return | ||
if next(mainloop_counter): return | ||
try: | ||
while True: | ||
if shutdown: break | ||
time.sleep(1) | ||
except: | ||
try: log_exc = logging2.log_exc | ||
except NameError: pass | ||
else: log_exc() | ||
|
||
shutdown_counter = count() | ||
|
||
def _shutdown(): | ||
global shutdown | ||
shutdown = True | ||
if next(shutdown_counter): return | ||
for func in reversed(shutdown_list): func() | ||
from __future__ import absolute_import, print_function | ||
|
||
import os, sys, time, threading, random | ||
from os.path import dirname | ||
from itertools import count | ||
|
||
__version__ = '0.7.14' | ||
|
||
uid = str(random.randint(1, 1000000)) | ||
|
||
def detect_mode(): | ||
try: import google.appengine | ||
except ImportError: pass | ||
else: | ||
if os.getenv('SERVER_SOFTWARE', '').startswith('Development'): | ||
return 'GAE-LOCAL' | ||
return 'GAE-SERVER' | ||
|
||
try: from mod_wsgi import version | ||
except: pass | ||
else: return 'MOD_WSGI' | ||
|
||
main = sys.modules['__main__'] | ||
|
||
if not hasattr(main, '__file__'): # console | ||
return 'INTERACTIVE' | ||
|
||
if os.getenv('IPYTHONENABLE', '') == 'True': | ||
return 'INTERACTIVE' | ||
|
||
if getattr(main, 'INTERACTIVE_MODE_AVAILABLE', False): # pycharm console | ||
return 'INTERACTIVE' | ||
|
||
if 'flup.server.fcgi' in sys.modules: return 'FCGI-FLUP' | ||
if 'uwsgi' in sys.modules: return 'UWSGI' | ||
if 'flask' in sys.modules: return 'FLASK' | ||
if 'cherrypy' in sys.modules: return 'CHERRYPY' | ||
if 'bottle' in sys.modules: return 'BOTTLE' | ||
return 'UNKNOWN' | ||
|
||
MODE = detect_mode() | ||
|
||
MAIN_FILE = None | ||
if MODE == 'MOD_WSGI': | ||
for module_name, module in sys.modules.items(): | ||
if module_name.startswith('_mod_wsgi_'): | ||
MAIN_FILE = module.__file__ | ||
break | ||
elif MODE != 'INTERACTIVE': | ||
MAIN_FILE = sys.modules['__main__'].__file__ | ||
|
||
if MAIN_FILE is not None: MAIN_DIR = dirname(MAIN_FILE) | ||
else: MAIN_DIR = None | ||
|
||
PONY_DIR = dirname(__file__) | ||
|
||
shutdown = False | ||
|
||
shutdown_list = [] | ||
|
||
def on_shutdown(func): | ||
if func not in shutdown_list: shutdown_list.append(func) | ||
return func | ||
|
||
exception_in_main = None # sets to exception instance by use_autoreload() | ||
|
||
def exitfunc(): | ||
mainloop() | ||
_shutdown() | ||
if sys.platform == 'win32' and MODE == 'CHERRYPY' and exception_in_main: | ||
# If a script is started in Windows by double-clicking | ||
# and a problem occurs, then the following code will | ||
# prevent the console window from closing immediately. | ||
# This only works if use_autoreload() has been called | ||
print('\nPress Enter to exit...') | ||
raw_input() | ||
prev_func() | ||
|
||
if MODE in ('INTERACTIVE', 'GAE-SERVER', 'GAE-LOCAL'): pass | ||
elif hasattr(threading, '_shutdown'): | ||
prev_func = threading._shutdown | ||
threading._shutdown = exitfunc | ||
else: | ||
prev_func = sys.exitfunc | ||
sys.exitfunc = exitfunc | ||
|
||
mainloop_counter = count() | ||
|
||
_do_mainloop = False # sets to True by pony.web.start_http_server() | ||
|
||
def mainloop(): | ||
if not _do_mainloop: return | ||
if MODE not in ('CHERRYPY', 'FCGI-FLUP'): return | ||
if next(mainloop_counter): return | ||
try: | ||
while True: | ||
if shutdown: break | ||
time.sleep(1) | ||
except: | ||
try: log_exc = logging2.log_exc | ||
except NameError: pass | ||
else: log_exc() | ||
|
||
shutdown_counter = count() | ||
|
||
def _shutdown(): | ||
global shutdown | ||
shutdown = True | ||
if next(shutdown_counter): return | ||
for func in reversed(shutdown_list): func() |