Я сталкиваюсь с известной проблемой запуска асинхронных функций в Jupyter (https://github.com/jupyterlab/jupyterlab/issues/4399, https://github.com/ipython/ipython/issues/11030 и ссылкой в https://blog.jupyter.org/ipython-7-0-async-repl-a35ce050f7f7).
Я просто обновляю библиотеку Slack Pythonдо версии 2.0, и я столкнулся с той же проблемой, что и выше, а именно:
import slack
client = slack.WebClient(token=os.environ["SLACK_TOKEN"])
client.chat_postMessage(channel="@flavien", text="test")
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-12-20f89b3af945> in <module>
2
3 client = slack.WebClient(token=os.environ["SLACK_TOKEN"])
----> 4 asyncio.run(client.chat_postMessage(channel="@flavien", text="test"))
~/miniconda3/envs/analytics/lib/python3.6/site-packages/slack/web/client.py in chat_postMessage(self, channel, **kwargs)
289 """
290 kwargs.update({"channel": channel})
--> 291 return self.api_call("chat.postMessage", json=kwargs)
292
293 def chat_unfurl(
~/miniconda3/envs/analytics/lib/python3.6/site-packages/slack/web/base_client.py in api_call(self, api_method, http_verb, files, data, params, json)
133 return future
134
--> 135 return self._event_loop.run_until_complete(future)
136
137 def _validate_xoxp_token(self):
~/miniconda3/envs/analytics/lib/python3.6/site-packages/nest_asyncio.py in run_until_complete(self, future)
61 return f.result()
62 else:
---> 63 return self._run_until_complete_orig(future)
64
65 bogus_handle = asyncio.Handle(None, None, loop)
~/miniconda3/envs/analytics/lib/python3.6/asyncio/base_events.py in run_until_complete(self, future)
453 future.add_done_callback(_run_until_complete_cb)
454 try:
--> 455 self.run_forever()
456 except:
457 if new_task and future.done() and not future.cancelled():
~/miniconda3/envs/analytics/lib/python3.6/asyncio/base_events.py in run_forever(self)
410 if events._get_running_loop() is not None:
411 raise RuntimeError(
--> 412 'Cannot run the event loop while another loop is running')
413 self._set_coroutine_wrapper(self._debug)
414 self._thread_id = threading.get_ident()
RuntimeError: Cannot run the event loop while another loop is running
Несмотря на множество испытаний, мне не удалось заставить его работать. Есть ли способ обойти эту проблему?
Версии моих пакетов с Python 3.6.6
jupyter 1.0.0 py_2 conda-forge
ipykernel 5.1.0 py36h24bf2e0_1002 conda-forge
tornado 6.0.2 py36h516909a_0 conda-forge
slackclient 2.0.1 pypi_0 pypi
Заранее благодарен за помощь.