Как прокинуть исключение для остановки скрипта? - Python

Узнай цену своей работы

Формулировка задачи:

Всем добрый день, написал команду для запуска потоков, только как теперь в команде stop реализовать исключение в ф-ции start() чтобы завершить потоки? Эта команда будет запускаться с помощью supervisor или ей подобной
Листинг программы
  1. class Command(BaseCommand):
  2. '''
  3. Дополнительные команды для старта и остановки потоков,
  4. manage.py optional start - запускает потоки
  5. manage.py optional stop - останавливает потоки
  6. '''
  7. def add_arguments(self, parser):
  8. parser.add_argument('command', default=False)
  9. parser.add_argument('-stop', default=False)
  10. def handle(self, *args, **options):
  11. # for i in options:
  12. # print(i, options[i])
  13. if options['command'] == 'start':
  14. self.stdout.write('Scheduled messages is started')
  15. start()
  16. if options['command'] == 'stop':
  17. self.stdout.write('Scheduled messages is stopped')
  18.  
  19. def start():
  20. def message_scheduled(name, event):
  21. while event.is_set():
  22. mes = Message.objects.filter(status='scheduled').values('owner_id', 'message_id', 'timestamp')
  23. # получаем id сообщений которые соответствуют времени отправки
  24. send_dlist = {i['message_id']: get_token(i['owner_id']) for i in mes if
  25. i['timestamp'] in range(round(time.time() - 60), round(time.time()))}
  26. scheduled_req(send_dlist)
  27. print(send_dlist)
  28. time.sleep(10)
  29.  
  30. def stat(name, event):
  31. while event.is_set():
  32. print('<Thread: %s>' % (name))
  33. collect_stats()
  34. time.sleep(10)
  35. try:
  36. event = threading.Event()
  37. event.set()
  38. t1 = threading.Thread(target=message_scheduled, args=('mes', event))
  39. t2 = threading.Thread(target=stat, args=('stat', event))
  40. t1.start()
  41. t2.start()
  42. while True:
  43. time.sleep(0.01)
  44. except KeyboardInterrupt:
  45. event.clear()
  46. t1.join()
  47. t2.join()

Решение задачи: «Как прокинуть исключение для остановки скрипта?»

textual
Листинг программы
  1. class Command(BaseCommand):
  2.     def handle(self, *args, **options):
  3.             mes = Message.objects.filter(status='scheduled').values('owner_id', 'message_id', 'timestamp')
  4.             # получаем id сообщений которые соответствуют времени отправки
  5.             send_dlist = {i['message_id']: get_token(i['owner_id']) for i in mes if
  6.                           i['timestamp'] in range(round(time.time() - 60), round(time.time()))}
  7.             scheduled_req(send_dlist)
  8.             print(send_dlist)
  9.  
  10.             collect_stats()

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы