プロジェクトに web2py を使用していますが、gevent.sleep が予期しない切断でハングしているように見えることがわかりました。これは、不適切に処理された例外が原因であると推測しています。gevent.sleep() からの例外をキャッチ、リンク、または監視するにはどうすればよいですか?
前もって感謝します。
プロジェクトに web2py を使用していますが、gevent.sleep が予期しない切断でハングしているように見えることがわかりました。これは、不適切に処理された例外が原因であると推測しています。gevent.sleep() からの例外をキャッチ、リンク、または監視するにはどうすればよいですか?
前もって感謝します。
奇妙な推測、それは間違っているかもしれません。sleep() は現在の Greenlet を一時停止し、次の保留中の Greenlet を再開します。ほとんどの場合、実行をブロックする sleep() の後に実行される次の Geenlet です。
トレースバックが表示されない場合は、sleep() からのものではありません。
スリープ機能のソースコード:
def sleep(seconds=0):
"""Put the current greenlet to sleep for at least *seconds*.
*seconds* may be specified as an integer, or a float if fractional seconds
are desired.
If *seconds* is equal to or less than zero, yield control the other coroutines
without actually putting the process to sleep. The :class:`core.idle` watcher
with the highest priority is used to achieve that.
"""
hub = get_hub()
loop = hub.loop
if seconds <= 0:
watcher = loop.idle()
watcher.priority = loop.MAXPRI
else:
watcher = loop.timer(seconds)
hub.wait(watcher)