async def main():
logging.basicConfig(level=logging.INFO)
scheduler_task = asyncio.create_task(scheduler()) # создаём фоновую задачу
try:
await dp.start_polling(bot)
finally:
scheduler_task.cancel() # сигналим о прерывании фоновой задачи
try:
await scheduler_task # даём фоновой задаче шанс обработать сигнал о прерывании
except asyncio.CancelledError:
pass # если всё отработало как надо, то await выкинет CancelledError
def serve_client(client: socket.socket, addr):
... # тут обслуживаешь одно соединение от начала до конца, включая закрытие
def main():
addr = ("0.0.0.0", 10101)
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(addr)
server.listen()
try:
while True:
client_sock, client_addr = server.accept() # ждём соединения
Thread(
target=serve_client, # какую функцию запускаем
args=(client_sock, client_addr), # передаём ей параметры
daemon=True, # чтобы по завершению главного потока эти потоки тоже завершились
name=f'Serving_{client_addr}' # имя особо не влияет, но для красоты можно
).start()
finally: # была ошибка, или нас закрыли по Ctrl-C
server.close() # закрываем сокет
... # тут мы можем сделать ещё что-то перед закрытием
if __name__ == '__main__':
main()
-f' causes autossh to drop to the background before running ssh. The -f flag is stripped from arguments passed to ssh. Note that there is a crucial a difference between -f with autossh, and -f with ssh: when used with autossh ssh will be unable to ask for passwords or passphrases. When -f is used, the "starting gate" time (see AUTOSSH_GATETIME) is set to 0.
вызываю главный скрипт wp.py
with open("registr.txt", "w+") as f:
content = f.read()
content = content.strip()
if content == "0":
...
elif content == "1": # почитай, что делает elif
...
else: # в файле не 0 и не 1
print('Неожиданное содержимое файла registr.txt!', repr(content))
c.execute(f"UPDATE users SET cash = {c.execute(f'SELECT cash FROM users WHERE id = {inter.author.id}') - row[1]} WHERE id = {inter.author.id}")