Asyncio в представлении Джанго - PullRequest
0 голосов
/ 29 мая 2018

2018-05-30 09:53:21 [исключение ОШИБКА] Внутренняя ошибка сервера: / of / template / team Traceback (последний вызов был последним): файл "/Users/wangchao/.virtualenvs/ENV_PY3.6_zbxtree/lib/python3.6/site-packages/django/core/handlers/exception.py ", строка 41, во внутреннем ответе = файл get_response (запрос)" /Users/wangchao/.virtualenvs/ENV_PY3.6_zbxtree/lib/python3.6/site-packages/django/core/handlers/base.py ", строка 187, в _get_response response = self.process_exception_by_middleware (e, запрос) Файл" /Users/wangchao/.virtualenvs/ENV_PY3.6_zbxtree/lib/python3.6/site-packages/django/core/handlers/base.py ", строка 185, в _get_response response = wrapped_callback (запрос, * callback_args, ** callback_kwargs) Файл" /Users/wangchao/.virtualenvs/ENV_PY3.6_zbxtree/lib/python3.6 / site-packages / django / views / generic / base.py ", строка 68, в представлении возвращает self.dispatch (request, * args, ** kwargs) Файл" /Users/wangchao/.virtualenvs/ENV_PY3.6_zbxtree / lib / python3.6 / site-packages / django / contrib / auth / mixins.py ", строка 56, в dispatch return super (LoginRequiredMixin, self) .dispatch (запрос, * args, ** kwargs) Файл "/Users/wangchao/.virtualenvs/ENV_PY3.6_zbxtree/lib/python3.6/site-packages/django/views/generic/base.py ", строка 88, в обработчике возврата отправки (запрос, * args, ** kwargs) Файл" /Users/wangchao/.virtualenvs/ENV_PY3.6_zbxtree/lib/python3.6/site-packages/django/views/generic / base.py ", строка 155, в файле get context = self.get_context_data (** kwargs)" /Users/wangchao/Documents/SenseTime/sencetime_git/wangchao3/zabbixbiztree/biztree/of/views/template_team.py ",строка 33, в файле get_context_data self.test () "/Users/wangchao/Documents/SenseTime/sencetime_git/wangchao3/zabbixbiztree/biztree/of/views/template_team.py", строка 29, в результате теста = loop.run_until_compleyn as (.gather (* tasks)) Файл "/usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/tasks.py", строка 596, в сбореfut = sure_future (arg, loop = loop) Файл "/usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework / Versions / 3.6 / lib / python3.6 / asyncio / tasks.py ", строка 518, в loop_future loop = events.get_event_loop () Файл" /usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework / Versions / 3.6 / lib / python3.6 / asyncio / events.py ", строка 676, в get_event_loop, возвращать get_event_loop_policy (). Файл get_event_loop ()" /usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework / Versions / 3.6 / lib / python3.6 / asyncio / events.py ", строка 584, в get_event_loop% threading.current_thread (). name) RuntimeError: В потоке 'Thread-2' нет текущего цикла событий.2018-05-30 09:53:21 [basehttp ОШИБКА] "GET / of / template / team HTTP / 1.1" 500 118472

class TemplateTeamView(LoginRequiredMixin,TemplateView):

    template_name = 'of/template_team.html'
    def get_context_data(self, **kwargs):
        loop = asyncio.get_event_loop()
        tasks = [of._get_detail_template(i) for i in [1,2,3,4]]
        result = loop.run_until_complete(asyncio.gather(*tasks))
        context = super(TemplateTeamView, self).get_context_data(**kwargs)
        context.update({"result": result})
        return context

как спроектировать вызов нескольких API для сбора результата перед шаблоном рендеринга?

...