HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 19.05.2022, 12:10
pomidorq
Участник форума
Регистрация: 17.04.2020
Сообщений: 184
С нами: 3197792

Репутация: 83
По умолчанию

Переписываю одного бота на aiogram, сам в асинке полный ноль, выходит вот такая ошибка при запуске main.py.

RuntimeWarning: coroutine 'weather' was never awaited

main.py:





Код:
from
aiogram
import
executor
from
loader
import
dp
from
threads
import
*
from
handlers
import
*
if
__name__
==
'__main__'
:
threadWeather
.
start
(
)
executor
.
start_polling
(
dp
,
skip_updates
=
True
)


loader.py:





Код:
from
aiogram
import
Bot
,
Dispatcher
,
types
from
data
import
TOKEN

bot
=
Bot
(
token
=
TOKEN
,
parse_mode
=
"HTML"
)
dp
=
Dispatcher
(
bot
)


threads/__init__.py:





Код:
from
.
weather
import
weather
from
threading
import
Thread

threadWeather
=
Thread
(
target
=
weather
,
args
=
(
"10:56:00"
,
)
)


threads/weather.py:





Код:
from
main
import
bot
from
data
import
admins
from
datetime
import
datetime
from
time
import
sleep
# 12:00:00
async
def
weather
(
time
:
str
)
-
>
None
:
time
=
time
.
split
(
":"
)
while
True
:
_
=
datetime
.
now
(
)
if
_
.
hour
==
int
(
time
[
0
]
)
and
\
            _
.
minute
==
int
(
time
[
1
]
)
and
\
            _
.
second
==
int
(
time
[
2
]
)
:
await
bot
.
send_message
(
admins
[
0
]
,
"Время пришло!"
)
sleep
(
0.25
)
 
Ответить с цитированием

  #2  
Старый 20.05.2022, 12:30
Neon3333
Участник форума
Регистрация: 13.02.2019
Сообщений: 183
С нами: 3815624

Репутация: 83
По умолчанию

Цитата:
Сообщение от SOLO WARRIOR  

Переписываю одного бота на aiogram, сам в асинке полный ноль, выходит вот такая ошибка при запуске main.py.
RuntimeWarning: coroutine 'weather' was never awaited

main.py:





Код:
from
aiogram
import
executor
from
loader
import
dp
from
threads
import
*
from
handlers
import
*
if
__name__
==
'__main__'
:
threadWeather
.
start
(
)
executor
.
start_polling
(
dp
,
skip_updates
=
True
)


loader.py:





Код:
from
aiogram
import
Bot
,
Dispatcher
,
types
from
data
import
TOKEN

bot
=
Bot
(
token
=
TOKEN
,
parse_mode
=
"HTML"
)
dp
=
Dispatcher
(
bot
)


threads/__init__.py:





Код:
from
.
weather
import
weather
from
threading
import
Thread

threadWeather
=
Thread
(
target
=
weather
,
args
=
(
"10:56:00"
,
)
)


threads/weather.py:





Код:
from
main
import
bot
from
data
import
admins
from
datetime
import
datetime
from
time
import
sleep
# 12:00:00
async
def
weather
(
time
:
str
)
-
>
None
:
time
=
time
.
split
(
":"
)
while
True
:
_
=
datetime
.
now
(
)
if
_
.
hour
==
int
(
time
[
0
]
)
and
\
            _
.
minute
==
int
(
time
[
1
]
)
and
\
            _
.
second
==
int
(
time
[
2
]
)
:
await
bot
.
send_message
(
admins
[
0
]
,
"Время пришло!"
)
sleep
(
0.25
)

Во-первых, не надо использовать никакие "loader" из дебильных примеров, во-вторых, зачем пытаться переписать что-то на асинк, если ты не понимаешь как он работает. Для начала разберись нормально в работе с ним на питоне, а потом берись за это чтоб не писать бредятину такую как ты написал в коде выше.

Потоки никакого отношения не имеют к асинку, вызов асинхронных функций делается через await

_:





Код:
await
weather
(
'12:00:00'
)


Но в твоем случае тебе это нужно переделать под таск, который может выполняться в фоне, ибо даже если ты его передашь в кварги executor'a в on_startup, он тебе заблочит весь эвент луп и полинг не запустится. По этому, разбирайся нормально в теме, а потом уже проблемы тут пытайся решать.

А чтоб без велосипедов как у тебя, есть отличное решение для планирования задач - APScheduler
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.