, если все вышеприведенное решение не работает, возможно, тогда это может помочь. Где-то по линии вы могли подключиться к своей локальной базе данных mongodb через брандмауэры.
Вы можете создать свою собственную локальную переменную потока, чтобы сохранить собственный идентификатор сопрограммы или даже непосредственно ее сохраненный вывод, и использовать функцию расширения ThreadLocal.asContextElement()
для преобразования ее в элемент контекста сопрограммы. Теперь, если вы запустите свою сопрограмму с этим элементом, то указанное значение этой локальной переменной потока будет автоматически установлено в соответствующую локальную переменную потока, поскольку эта сопрограмма переходит от потока к потоку. Смотрите следующий пример кода:
import kotlinx.coroutines.*
val myId = ThreadLocal<String>()
// I'm not a suspending function, yet I know what coroutine I work in
fun whereAmI() {
println("I'm in coroutine '${myId.get()}'")
}
fun main() = runBlocking<Unit> {
launch(myId.asContextElement("First")) {
whereAmI()
}
launch(myId.asContextElement("Second")) {
whereAmI()
}
}