def handle(self, *args, **options): # seems it would be simpler if i just set # self.channel_layer = channel_layers['inmemory'] # in inner_run below, but when I do that, messages don't get sent settings.CHANNEL_LAYERS['default'] = settings.CHANNEL_LAYERS['inmemory'] from otree.common_internal import release_any_stale_locks release_any_stale_locks() # don't use cached template loader, so that users can refresh files # and see the update. # kind of a hack to patch it here and to refer it as [0], # but can't think of a better way. settings.TEMPLATES[0]['OPTIONS']['loaders'] = [ 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', ] # so we know not to use Huey otree.common_internal.USE_REDIS = False # for performance, # only run checks when the server starts, not when it reloads # (RUN_MAIN is set by Django autoreloader). if not os.environ.get('RUN_MAIN'): try: self.check(display_num_errors=True) except Exception as exc: common_internal.print_colored_traceback_and_exit(exc) super().handle(*args, **options)
def handle(self, *args, **options): # use in-memory. # this is the simplest way to patch tests to use in-memory, # while still using Redis in production settings.CHANNEL_LAYERS['default'] = settings.INMEMORY_CHANNEL_LAYER from otree.common_internal import release_any_stale_locks release_any_stale_locks() # don't use cached template loader, so that users can refresh files # and see the update. # kind of a hack to patch it here and to refer it as [0], # but can't think of a better way. settings.TEMPLATES[0]['OPTIONS']['loaders'] = [ 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', ] # so we know not to use Huey otree.common_internal.USE_REDIS = False # initialize browser bot worker in process memory otree.bots.browser.browser_bot_worker = otree.bots.browser.Worker() super(Command, self).handle(*args, **options)
def handle(self, *args, **options): # use in-memory. # this is the simplest way to patch runserver to use in-memory, # while still using Redis in production settings.CHANNEL_LAYERS['default'] = ( settings.CHANNEL_LAYERS['inmemory']) from otree.common_internal import release_any_stale_locks release_any_stale_locks() # don't use cached template loader, so that users can refresh files # and see the update. # kind of a hack to patch it here and to refer it as [0], # but can't think of a better way. settings.TEMPLATES[0]['OPTIONS']['loaders'] = { 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', } # so we know not to use Huey otree.common_internal.USE_REDIS = False # initialize browser bot worker in process memory otree.bots.browser.browser_bot_worker = otree.bots.browser.Worker() super(Command, self).handle(*args, **options)
def handle(self, *args, **options): # use in-memory. # this is the simplest way to patch tests to use in-memory, # while still using Redis in production settings.CHANNEL_LAYERS['default'] = settings.INMEMORY_CHANNEL_LAYER from otree.common_internal import release_any_stale_locks release_any_stale_locks() # don't use cached template loader, so that users can refresh files # and see the update. # kind of a hack to patch it here and to refer it as [0], # but can't think of a better way. settings.TEMPLATES[0]['OPTIONS']['loaders'] = [ 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', ] # so we know not to use Huey otree.common_internal.USE_REDIS = False super().handle(*args, **options)
def handle(self, *args, **options): self.verbosity = options.get("verbosity", 1) from otree.common_internal import release_any_stale_locks release_any_stale_locks() # for performance, # only run checks when the server starts, not when it reloads # (RUN_MAIN is set by Django autoreloader). if not os.environ.get('RUN_MAIN'): try: # don't suppress output. it's good to know that check is # not failing silently or not being run. # also, intercepting stdout doesn't even seem to work here. self.check(display_num_errors=True) except Exception as exc: otree_startup.print_colored_traceback_and_exit(exc) super().handle(*args, **options)
def handle(self, *args, **options): # seems it would be simpler if i just set # self.channel_layer = channel_layers['inmemory'] # in inner_run below, but when I do that, messages don't get sent settings.CHANNEL_LAYERS['default'] = settings.CHANNEL_LAYERS['inmemory'] from otree.common_internal import release_any_stale_locks release_any_stale_locks() # don't use cached template loader, so that users can refresh files # and see the update. # kind of a hack to patch it here and to refer it as [0], # but can't think of a better way. settings.TEMPLATES[0]['OPTIONS']['loaders'] = [ 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', ] # so we know not to use Huey otree.common_internal.USE_REDIS = False # for performance, # only run checks when the server starts, not when it reloads # (RUN_MAIN is set by Django autoreloader). if not os.environ.get('RUN_MAIN'): try: # don't suppress output. it's good to know that check is # not failing silently or not being run. # also, intercepting stdout doesn't even seem to work here. self.check(display_num_errors=True) except Exception as exc: otree_startup.print_colored_traceback_and_exit(exc) super().handle(*args, **options)
import os import channels.asgi from . import configure_settings configure_settings() channel_layer = channels.asgi.get_channel_layer() from otree.common_internal import ( release_any_stale_locks, get_redis_conn # noqa ) # clear any tasks in Huey DB, so they don't pile up over time, # especially if you run the server without the timeoutworker to consume the # tasks. # ideally we would only schedule a task in Huey if timeoutworker is running, # so that we don't pile up messages that never get consumed, but I don't know # how and when to check if Huey is running, in a performant way. # this code is also in timeoutworker. from huey.contrib.djhuey import HUEY # noqa HUEY.flush() from otree.bots.browser import redis_flush_bots # noqa redis_flush_bots(get_redis_conn()) # needs to happen after Django setup release_any_stale_locks()