Example #1
0
def prepare_orm_for_gevent():
    """
    In order to make psycopg2 work with gevent, we need to apply this patch, otherwise all worker connections will use
    only one connection which might cause serious issues in production.
    Also, the patch needs to be applied before creating the db engine.
    """
    gevent_psycopg2.monkey_patch()
Example #2
0
def main(args):
    check_root_user()
    openerp.tools.config.parse_config(args)

    if openerp.tools.config.options["gevent"]:
        openerp.evented = True
        _logger.info('Using gevent mode')
        import gevent.monkey
        gevent.monkey.patch_all()
        import gevent_psycopg2
        gevent_psycopg2.monkey_patch()

    check_postgres_user()
    openerp.netsvc.init_logger()
    report_configuration()

    config = openerp.tools.config

    setup_signal_handlers(signal_handler)

    if config["test_file"]:
        run_test_file(config['db_name'], config['test_file'])
        sys.exit(0)

    if config["translate_out"]:
        export_translation()
        sys.exit(0)

    if config["translate_in"]:
        import_translation()
        sys.exit(0)

    if not config["stop_after_init"]:
        setup_pid_file()
        # Some module register themselves when they are loaded so we need the
        # services to be running before loading any registry.
        if not openerp.evented:
            if config['workers']:
                openerp.service.start_services_workers()
            else:
                openerp.service.start_services()
        else:
            config['xmlrpc_port'] = config['longpolling_port']
            import gevent
            gevent.spawn(watch_parent)
            openerp.service.start_services()

    rc = 0
    if config['db_name']:
        for dbname in config['db_name'].split(','):
            if not preload_registry(dbname):
                rc += 1

    if config["stop_after_init"]:
        sys.exit(rc)

    _logger.info('OpenERP server is running, waiting for connections...')
    quit_on_signals()
Example #3
0
def main(args):
    check_root_user()
    openerp.tools.config.parse_config(args)

    if openerp.tools.config.options["gevent"]:
        openerp.evented = True
        _logger.info('Using gevent mode')
        import gevent.monkey
        gevent.monkey.patch_all()
        import gevent_psycopg2
        gevent_psycopg2.monkey_patch()

    check_postgres_user()
    openerp.netsvc.init_logger()
    report_configuration()

    config = openerp.tools.config

    setup_signal_handlers(signal_handler)

    if config["test_file"]:
        run_test_file(config['db_name'], config['test_file'])
        sys.exit(0)

    if config["translate_out"]:
        export_translation()
        sys.exit(0)

    if config["translate_in"]:
        import_translation()
        sys.exit(0)

    if not config["stop_after_init"]:
        setup_pid_file()
        # Some module register themselves when they are loaded so we need the
        # services to be running before loading any registry.
        if not openerp.evented:
            if config['workers']:
                openerp.service.start_services_workers()
            else:
                openerp.service.start_services()
        else:
            config['xmlrpc_port'] = config['longpolling_port']
            import gevent
            gevent.spawn(watch_parent)
            openerp.service.start_services()

    rc = 0
    if config['db_name']:
        for dbname in config['db_name'].split(','):
            if not preload_registry(dbname):
                rc += 1

    if config["stop_after_init"]:
        sys.exit(rc)

    _logger.info('OpenERP server is running, waiting for connections...')
    quit_on_signals()
Example #4
0
def run(args):
    # Note that gevent monkey patching must be done before importing the
    # `threading` module, see http://stackoverflow.com/questions/8774958/.
    if args.gevent:
        import gevent
        import gevent.monkey
        import gevent.wsgi
        import gevent_psycopg2
        gevent.monkey.patch_all()
        gevent_psycopg2.monkey_patch()
    import threading
    import openerp
    import openerp.cli.server
    import openerp.service.wsgi_server
    import openerp.tools.config
    config = openerp.tools.config

    os.environ["TZ"] = "UTC"
    common.set_addons(args)

    openerp.multi_process = True
    common.setproctitle('openerp-web')

    openerp.cli.server.check_root_user()
    openerp.netsvc.init_logger()
    #openerp.cli.server.report_configuration()
    openerp.cli.server.configure_babel_localedata_path()

    target = openerp.service.wsgi_server.serve
    if not args.gevent:
        openerp.evented = False
        openerp.cli.server.setup_signal_handlers(openerp.cli.server.signal_handler)
        # TODO openerp.multi_process with a multi-threaded process probably
        # doesn't work very well (e.g. waiting for all threads to complete
        # before killing the process is not implemented).
        arg = (args.interface, int(args.port), args.threaded)
        threading.Thread(target=target, args=arg).start()
        openerp.cli.server.quit_on_signals()
    else:
        openerp.evented = True

        app = openerp.service.wsgi_server.application
        server = gevent.wsgi.WSGIServer((args.interface, int(args.port)), app)
        setup_signal_handlers(mk_signal_handler(server))
        try:
            server.serve_forever()
        except KeyboardInterrupt:
            try:
                server.stop()
                gevent.shutdown()
            except KeyboardInterrupt:
                sys.stderr.write("Forced shutdown.\n")
                gevent.shutdown()
Example #5
0
def main(args=None):
    """Consume the Twitter Streaming API."""
    
    # Write a pid file.
    f = open('stream.pid', 'w')
    f.write(str(os.getpid()))
    f.close()
    
    # Parse the command line args.
    if args is None:
        args = parse_args()
    
    # Read the config file.
    config = ConfigParser.SafeConfigParser()
    config.read(args.config_file)
    
    # Setup logging.
    logging.config.fileConfig(args.config_file)
    
    # Patch sockets and threading.
    from gevent import monkey
    monkey.patch_all()
    import gevent_psycopg2
    gevent_psycopg2.monkey_patch()
    
    # Bind the model classes.
    engine = create_engine(config.get('app:beliveat', 'sqlalchemy.url'))
    bind_engine(engine)
    
    # Instantiate a ``Manager`` with a redis client and oauth handler and
    # start the manager running.
    client = get_redis_client()
    handler = oauth_handler_factory(config)
    manager = Manager(client, handler, args.input_channel, args.output_channel)
    
    # Close the db connection
    Session.remove()
    
    try:
        manager.start()
    except KeyboardInterrupt:
        manager.stop()
Example #6
0
def main(args=None):
    """Process the ``INPUT_CHANNEL`` redis queue."""
    
    # Write a pid file.
    f = open('queue.pid', 'w')
    f.write(str(os.getpid()))
    f.close()
    
    # Parse the command line args.
    if args is None:
        args = parse_args()
    
    # Read the config file.
    config = ConfigParser.SafeConfigParser()
    config.read(args.config_file)
    
    # Setup logging.
    logging.config.fileConfig(args.config_file)
    
    # Patch sockets, threading and the db driver.
    from gevent import monkey
    monkey.patch_all()
    import gevent_psycopg2
    gevent_psycopg2.monkey_patch()
    
    # Bind the model classes.
    engine = create_engine(config.get('app:beliveat', 'sqlalchemy.url'))
    bind_engine(engine)
    
    # Setup the redis queue processor.
    client = get_redis_client()
    processor = QueueProcessor(client, [args.input_channel], handle_data)
    
    # Close the db connection
    Session.remove()
    
    try:
        processor.start()
    except KeyboardInterrupt:
        pass
Example #7
0
#coding:utf-8


import psycopg2,psycogreen
import gevent_psycopg2
gevent_psycopg2.monkey_patch()

"""
每台车辆
"""


class PostgreSqlConnection(object):
    """
        https://pypi.python.org/pypi/psycopg2
        http://pythonhosted.org/psycopg2/
        http://initd.org/psycopg/

        postgresql 9.4+
        psycopg2 2.7+
        jsonb supported: 2.5.4+
                http://initd.org/psycopg/docs/extras.html


        dict_cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)

    """
    def __init__(self,cfgs):
        self.cfgs = cfgs
        self.name = self.cfgs.get('name','')
        self.conn = None
Example #8
0
from gevent.wsgi import WSGIServer
import gevent
import gevent.monkey
import gevent.event
import flask

gevent.monkey.patch_all()
import gevent_psycopg2; gevent_psycopg2.monkey_patch()

import pyphilo
import sqlalchemy as sa
from sqlalchemy.orm import sessionmaker
import select
import time
from flask import Flask

app = Flask(__name__)
app.debug = True

posted = gevent.event.Event()

Session = sessionmaker(bind=pyphilo.engine)

@app.route("/")
def hello():
    return "Hello World 2!"

@app.route("/poll", methods=["POST"])
def poll():
    data = flask.request.json
Example #9
0
def patch():
    gevent_psycopg2.monkey_patch()
    extensions.set_wait_callback(gevent_wait_callback)
Example #10
0
def post_fork(server, worker):
    import gevent_psycopg2
    gevent_psycopg2.monkey_patch()
Example #11
0
File: fwd.py Project: andreypopp/fw
""" App"""

from gevent import monkey
monkey.patch_all()
from gevent_psycopg2 import monkey_patch
monkey_patch()

import weakref
import time
import itertools
import logging
import collections
import simplejson as json
from datetime import datetime, timedelta

from flask import Flask, render_template, request, abort
from gevent import pool, spawn
from gevent.pywsgi import WSGIServer
from gevent.queue import Queue, PriorityQueue
from geventwebsocket.handler import WebSocketHandler
from sqlalchemy import create_engine
from sqlalchemy.exc import IntegrityError
from werkzeug.serving import run_with_reloader

import facebook
import settings

__all__ = ("app", "main")

logging.basicConfig(level=logging.DEBUG)
log = logging.getLogger("fw")
Example #12
0
# TODO, figure out how to load gevent monkey patch cleanly in production
try:
    from gevent.monkey import patch_all
    patch_all()
    import gevent_psycopg2
    gevent_psycopg2.monkey_patch()
except ImportError:
    print "unable to apply gevent monkey.patch_all"

import os

from werkzeug.contrib.fixers import ProxyFix

from app import create_app
from extensions import assets

assets._named_bundles = {}
application = create_app()
# requires application context
assets.auto_build = False

if os.environ.get('SENTRY_DSN'):
    from raven.contrib.flask import Sentry
    sentry = Sentry()
    sentry.init_app(application)

application.wsgi_app = ProxyFix(application.wsgi_app)
Example #13
0
def patch():
    gevent_psycopg2.monkey_patch()
    extensions.set_wait_callback(gevent_wait_callback)
Example #14
0
def _post_fork(server, worker):
    gevent_psycopg2.monkey_patch()
Example #15
0
def green_threads():
    gevent.monkey.patch_all()
    gevent_psycopg2.monkey_patch()
Example #16
0
#!/usr/bin/env python
import os
import sys
from gevent import monkey

monkey.patch_all()
from gevent_psycopg2 import monkey_patch

monkey_patch()

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "livewire.settings")
    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)