In Windows I have come up with two solutions.
First option: Create a .bat file.
Step 1
Create a .bat file to indicate the command you want to run and the script file that will be executed, for instance:
start C:UsersuserXPython.exe C:UsersuserXPycharmProjectsAutomation_taskscreate_workbook.py
Step 2
Open the Task Scheduler and click on the Task Scheduler Library to see the current tasks that are executed. Click on the Create Task option.
Step 3
In the General tab, put the name of your new task and click on the option Run whether user is logged on or not
, check the option Run with highest privileges
and make sure to setup the appropriate version of you OS (in my case I picked Windows 7, Windows Server 2008 R2
.
Step 4
In the Actions tab, click on the New button and type in the following:
In Program/Scripts you need to look up for the Powershell path that the Task Scheduler will invoke to run the .bat file. In my case, my Powershell path was:
C:WindowsSystem32WindowsPowerShellv1.0powershell.exe
In Add arguments (optional) you need to type the path of the file that will be executed by Powershell. In my case, the path was:
C:UsersuserXDesktoprun_the_bat_file.bat
In Start in (optional) you need to type the path of the file but without the name of the .bat file, that is:
C:UsersuserXDesktop
Step 5
Click on the Triggers tab and select how often you want to execute this task.
Step 6
Lastly, test your task to see if it truly works by selecting it from the Task Scheduler Library and doing click on the Run option.
Second option: Run the .py file with the Task Scheduler
Step 1
Open the Task Scheduler and click on the Task Scheduler Library to see the current tasks that are executed. Click on the Create Task option.
Step 2
In the General tab, put the name of your new task and click on the option Run whether user is logged on or not
, check the option Run with highest privileges
and make sure to setup the appropriate version of you OS (in my case I picked Windows 7, Windows Server 2008 R2
.
Step 3
In the Actions tab, click on the New button and type in the following:
In Program/Scripts you need to look up for the Python.exe path that the Task Scheduler will invoke to run the python script. In my case, my Python.exe path was:
C:UsersuserXpython.exe
In Add arguments (optional) you need to only type the name of your python script. In my case, the path was:
Permissions_dump.py
In Start in (optional) you need to type the path of the file but without the name of the python script, that is:
C:UsersuserXPycharmProjects1099_vendors_costs
Step 4
Click on the Triggers tab and select how often you want to execute this task.
Step 5
Lastly, test your task to see if it truly works by selecting it from the Task Scheduler Library and doing click on the Run option.
Another option (in case you convert a .py to a .exe)
If you use the library Cx_Freeze to convert a .py to a .exe and you want to use the task scheduler to automate this task then you need to follow these steps:
Step 1
Click on Create Task and then click on the Actions tab to type in the following:
In Program/Scripts you need to look up for the C:Windowsexplorer.exe
path that the Task Scheduler will invoke to run the .exe script.
In Add arguments (optional) you need to only type the name of your .exe file: CustomerPopulation.exe
In Start in (optional) you need to type the path of the file but without the name of the .exe file, that is:
C:UsersuserXPycharmProjectsexecutables
In the General tab, make sure to have selected the Run only when user is logged on
and have unchecked the Run with the highest privileges
.
If reports stopped working
Make sure to check if your password hasn’t expired, otherwise the reports won’t be sent.
References:
- https://gis.stackexchange.com/questions/140110/running-python-script-in-task-scheduler-script-will-not-run?newreg=603bcdbc381b41a283e5d8d0561b835e
- https://www.youtube.com/watch?v=oJ4nktysxnE
- https://www.youtube.com/watch?v=n2Cr_YRQk7o
Перевод
Ссылка на автора
Запускать мои скрипты Python каждый день слишком хлопотно.
Мне нужен способ периодически запускать мои скрипты Python
Представьте, что ваш менеджер просит вас проснуться среди ночи, чтобы запустить сценарий. Это будет ваш самый большой кошмар. Вы просыпаетесь преждевременно, подвергаетесь воздействию ужасного синего света и избегаете приличных снов каждую полночь.
Как любой специалист в области данных, вам может потребоваться запустить несколько сценариев для создания отчетов или развертывания аналитического конвейера. Следовательно, вам нужно узнать опланировщикичтобы не испортить выходные.
Каждый инженер данных и ученый в один момент времени должен выполнять периодические задачи.
По определению, периодические задачи — это задачи, которые выполняются многократно в течение определенного промежутка времени без вмешательства человека или с минимальным вмешательством. В период быстрого развития данных и технологий вам необходимо запускать сценарии для создания резервных копий баз данных, потоковой передачи в Twitter и т. Д.
К счастью, с помощью Task Scheduler вы теперь можете запускать свой скрипт Python для выполнения периодических задач каждый день / неделю / месяц / год в зависимости от ваших потребностей.
В этом уроке вы узнаете, как запустить планировщик задач для веб-данные из Lazada (электронная коммерция) и поместите его в СУБД SQLite База данных.
Это быстрый способ запустить ваш скрипт автоматически!
Давайте начнем!
Методы
В этом руководстве мы будем использовать планировщик задач Windows для запуска сценария bat, который будет запускать сценарии Python. Для выполнения этих скриптов у нас есть два простых шага:
- Создать исполняемые файлы Python (bat-файл)
- Настроить задачу в планировщике задач Windows
Однако, если вы являетесь пользователем Linux и не имеете доступного планировщика задач Windows, вам следует использовать cron планировщики,
Создание исполняемого файла Windows для запуска Python
BAT файлэто DOSпакетный файлиспользуется для выполнения команд с помощью командной строки Windows (cmd.exe). Он содержит ряд команд строки, которые обычно могут вводиться в командной строке DOS.BAT файлычаще всего используются для запуска программ и запуска служебных программ в Windows. — fileinfo.com
Используя bat-файл в качестве нашего исполняемого файла, мы сохраним наш скрипт run в файле, а затем дважды щелкните файл bat, чтобы выполнить команду cmd (командная строка) для запуска скрипта python.
Все, что вам нужно сделать, это создать новый файл bat (например, web-scraping.bat) и написать исполняемый скрипт в формате, Вы можете добавитьПаузакоманда, чтобы избежать закрытия командной строки после выполнения.
C:new_softwarefinanceScriptspython.exe "C:/new_software/Web Scraping/Web-Scraping/Selenium Web Scraping/scraping-lazada.py"
pause
После того, как вы дважды щелкнете по этому файлу bat, Windows откроет вашу командную строку и запустит инструмент веб-поиска. Чтобы запланировать этот двойной щелчок / выполнение, мы подключим наш планировщик задач к файлу bat.
Настроить задачу в планировщике задач Windows
Планировщик задач Windowsявляется приложением Windows по умолчанию для управления задачами в ответ на триггер на основе событий или времени. Например, вы могли бы предложить определенный щелчок и компьютерные действия (такие как перезагрузка) или даже предложить время, каккаждый первый день финансового кварталавыполнить задачу.
В более широком плане эта задача будет содержать сценарий и метаданные, чтобы определить, что и как будет выполняться действие. Вы можете добавить определенный контекст безопасности в аргумент и контролировать, где планировщик будет запускать программу. Windows будет сериализовать все эти задачи как.JOBфайлы в специальной папке под названиемПапка задач,
В этом руководстве мы собираемся установить событие, основанное на времени, для запуска нашего приложения и вывода данных в SQLite. Всего там
- Нажмите Пуск Windows, найдите планировщик задач и откройте его.
- Нажмите Create Basic Task в правом окне.
- Выберите время запуска.
- Укажите точное время для нашего предыдущего выбора.
- Запустить программу
- Вставьте скрипт вашей программы, где вы сохранили свой bat файл
- Нажмите Готово.
Давайте начнем!
- Нажмите Пуск Windows, найдите планировщик задач и откройте его.,
2.Нажмите Create Basic Task в правом окне.,
Вы должны указывать имя задачи (например, веб-очистка) и описание (например, веб-очистка и дамп SQLite автоматически каждый день в 18:00)
3.Выберите время срабатывания,
У вас будет возможность выбрать временной триггер ежедневно, еженедельно и даже ежемесячно. Логически этот выбор во многом зависит от того, как часто вы хотите обновить значения из вашего источника данных. Например, если ваша задача — очистить баланс MarketWatch Stocks, вы должны запускать сценарии каждый финансовый квартал.
4.Выберите точное время для нашего предыдущего выбора,
Мы выберем месяц январь, апрель, июль и сентябрь, чтобы указать весь ранний финансовый квартал.
5 Запустить программу
Здесь вы сможете запускать скрипты Python, отправлять электронную почту и даже отображать сообщение. Не стесняйтесь выбирать те, которые вам наиболее удобны. Однако вам следует остерегаться устаревших задач, которые будут удалены в последующих исправлениях.
6.Вставьте скрипт вашей программы, где вы сохранили свой bat файл
Это запустит планировщик задач для вашего скрипта Python для автоматизации. Убедитесь, что вы также включили Пуск в папку вашего приложения, чтобы получить доступ ко всем соответствующим элементам (исполняемые файлы Selenium Browser / диск SQLite)
7.Нажмите Готово,
Вы можете проверить созданное расписание задач на первой странице Планировщика задач.
Поздравляем, вы установили свой первый автоматический планировщик в Windows.
Результат
Вот анимация GIF для ваших ссылок. Обратите внимание, как планировщик сам запускает скрипты Python. Как только сценарии завершатся, он извлечет извлеченное значение из базы данных SQLite. В будущем это приложение будет запускаться каждый раз, когда выполняется условие триггера, и добавлять обновленные значения в SQLite.
В заключение…
Я действительно надеюсь, что это было отличное чтение и источник вдохновения для вас, чтобы развиваться и вводить новшества.
пожалуйстаКомментарийниже, чтобы предложить и отзывы.
Если вам действительно это нравится, пожалуйста, проверьте мой профиль. Есть больше о статьях Data Analytics и Python Projects, которые будут соответствовать вашим интересам.
Удачного кодирования
об авторе
Винсент Татан — энтузиаст данных и технологий, имеющий соответствующий опыт работы в Visa Inc. и Lazada для реализации микросервисных архитектур, бизнес-аналитики и аналитических конвейерных проектов. ,
Винсент — коренной индонезийец, имеющий достижения в решении проблем, а также сильные стороны в разработке полного стека, анализе данных и стратегическом планировании.
Он активно консультирует SMU BI & Analytics Club, руководит начинающими учеными и инженерами в области данных из разных областей и раскрывает свой опыт для бизнеса в разработке своих продуктов.
Пожалуйста, свяжитесь с Винсентом через LinkedIn , средний или YouTube канал
В одной из записей блога я писал как можно автоматизировать выполнение скрипта при помощи cron и linux. Тогда речь шла о WSL (подсистема Linux для Windows). К сожалению с производительностью у WSL пока не все гладко, поэтому пришлось все портировать на Windows.
Сам вопрос запуска скрипта по расписанию в Windows на самом деле очень прост. Нужно лишь создать батник (файл с расширением .bat) прописать в нем все необходимые манипуляции и настроить выполнение данного файла в планировщике. Делается это так:
- В текстовом редакторе создаете новый файл
- Добавляете в него ваш код, в моем случае это одна строчка
C:UsersUser.virtualenvssite-GQljvJBGScriptspython.exe «D:/dev/site/backend/cron.py» - Сохраняете файл с расширением .bat, например cron.bat.
- В планировщике прописываете его выполнение
Особенности запуска Django кода
Если вы пропишите запуск какого нибудь Django скрипта то получите ошибку.
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings
Данная ошибка говорит о том, что для запуска скрипта нужн о сконфигурировать окружение, погружаться в дебри конфигураций не буду, отмечу лишь вариант решения проблемы.
В начале своего файла добавьте строчки кода
import os import django<br>os.environ["DJANGO_SETTINGS_MODULE"] = 'project.settings' django.setup()
Где ‘project.settings’ путь к файлу settings.py вашего Джанго проекта.
Прежде всего необходимо создать файл с расширением bat.
В этом файле написать следующий код:
C:UsersuserPycharmProjectsvenvScriptspython.exe C:UsersuserPycharmProjectsavtozapuskcitaty.py pause
Где мы сначала указываем путь, где находится python, далее путь к скрипту, который хотим запускать.
Следующая строка — это команда pause — остановка командной строки.
После этого идем в Планировщик заданий, в который можно попасть через Пуск.
В Планировщике заданий наводим мышкой на Библиотеку планировщика и кликаем правой кнопкой мыши, чтобы появилось меню. Там выбираем пункт: Создать простую задачу…
В появившемся окне зададим имя скрипту, а также, если есть желание, описание. После чего кликаем на кнопку Далее.
В следующем окне выберем как часто хотим запускать наш скрипт, в нашем случае выберем ежедневно. И вновь жамкаем на кнопку Далее.
На следующем шаге укажем время, в которое хотим запускать наш python-скрипт.
Выберем какую задачу хотим выполнить, в нашем примере — это Запустить программу.
В следующем окне укажем, расположение созданного нами файл с расширением .bat.
И в последнем окне кликаем на кнопку «Готово!»
На этом все. Если возникнуть сложности или остались вопросы — пишите в комментариях.
In this post, you’ll see the steps to schedule a Python script using the Windows Scheduler.
Step-1: Prepare the Python Script
For example, let’s suppose that the goal is to display ‘Hello World!’ each day at 6am.
Here is the Python script to be used for our example (you may use another Python script based on your needs):
import tkinter as tk root= tk.Tk() canvas1 = tk.Canvas(root, width = 300, height = 300) canvas1.pack() label1 = tk.Label(root, text='Hello World!') canvas1.create_window(150, 150, window=label1) root.mainloop()
Step-2: Save the Python Script
Once you’re done writing the script, save it as a Python file (where the file extension is .py):
For instance, let’s save the file as hello_world.py under the following path:
C:UsersRonDesktophello_world.py
Step-3: Create Batch File to Run the Python Script
Next, create a batch file to run the Python script.
To start, open Notepad, and then use the following template:
"Path where your Python exe is storedpython.exe" "Path where your Python script is storedscript name.py" pause
For our example:
- The path where the Python exe is stored is:
“C:UsersRonAppDataLocalProgramsPythonPython39python.exe” - The Path where the Python script is stored is (see step-2):
“C:UsersRonDesktophello_world.py”
Here are the paths in the Notepad (you’ll need to adjust those paths to fit your instances):
"C:UsersRonAppDataLocalProgramsPythonPython39python.exe" "C:UsersRonDesktophello_world.py" pause
Finally, save the Notepad with your file name and the “bat” file extension:
file_name.bat
For example, let’s save the Notepad as:
run_python_script.bat
Once you save the Notepad, a new batch file (called run_python_script) will be created at the specified location:
C:UsersRonDesktoprun_python_script.bat
Step-4: Schedule the Python Script using the Windows Scheduler
In order to schedule the Python script using the Windows Scheduler:
- Open the Windows Control Panel and then click on the Administrative Tools
- Double-click on the Task Scheduler, and then choose the option to ‘Create Basic Task…’
- Type a name for your task (you can also type a description if needed), and then press Next. For instance, let’s name the task as: Run Hello World
- Choose to start the task ‘Daily‘ since we wish to run the Python script daily at 6am. Also specify the start date and time (6am for our example)
- Select, Start a program, and then press Next
- Use the Browse button to find the batch file (run_python_script.bat) that runs the Python script. In our case:
C:UsersRonDesktoprun_python_script.bat
Finally, click on Finish, and you should be good to go. From this point onward, you’ll be greeted with ‘Hello World!’ everyday at 6am.
Однажды мы сделали цикл статей про телеграм-ботов:
- Как сделать телеграм-бота без программирования
- Телеграм-бот на Python
- Запускаем телеграм-бота на сервере
В итоге мы остановились на том, что научились запускать скрипт на сервере, чтобы он работал после разрыва соединения. Но это половинчатое решение: если мы перезапустим сервер, то бот остановится. Иногда сервер перезагружается сам на стороне провайдера, например при плановых технических работах. И тогда наши скрипты умирают.
Сейчас нам нужно такое решение, чтобы бот автоматически перезапускался при любых обстоятельствах. Этим и займёмся.
Коротко — суть
Чтобы было понятно, что тут происходит, вот короткая версия:
- Настраиваем удалённый доступ к серверу.
- Создаём папку и заливаем в неё скрипт, который в итоге должен будет работать всё время.
- Создаём у себя на компьютере файл службы — он управляет настройками автозапуска скрипта.
- Отправляем файл службы на сервер.
- Обновляем на сервере данные обо всех службах и запускаем нашу.
Теперь подробно про каждый шаг.
Предварительная работа
Основное, что мы будем использовать, — это удалённый доступ к серверу по SSH. Для этого он должен быть включён на самом сервере, и там же можно сразу посмотреть параметры доступа. Например, для работы нашего учебного сервера мы пользуемся услугами SpaceWeb, где доступ по SSH включается из панели управления:
Запускаем SSH и проверяем, что соединение устанавливается. Чтобы соединиться, нужно написать в терминале команду ssh имя_пользователя@адрес_сервера, после чего нажать Enter. Сервер спросит пароль, и, если мы его правильно ввели, нас пустят.
Мы видим приветствие сервера, значит, всё прошло хорошо и мы можем управлять им со своего компьютера. Для этого нужно будет писать в терминал команды и реагировать на то, что тебе ответит сервер.
Отправляем скрипт на сервер
Чтобы не захламлять корневую папку на сервере, создадим новую папку bot. Вот эта команда:
mkdir bot
После этого открываем новую командную строку на компьютере, а не на сервере. Для этого нужно запустить ещё одно окно терминала. Там пишем такое:
scp /Users/mihailpolanin/Downloads/bot.py mpolyanin@77.222.61.9:bot
Вот что это означает:
- scp — копирование файла по SSH;
- /Users/mihailpolanin/Downloads/bot.py — это путь к нашему скрипту на компьютере. Его замените на то, что будет у вас;
- mpolyanin@77.222.61.9 — адрес сервера и логин пользователя. Это тоже замените на ваши данные;
- : — отделяет сервер от папки;
- bot — название папки, которую мы только что создали на сервере.
Лайфхак: чтобы не писать вручную пути до файлов на локальном компьютере, можно перед началом ввода пути просто перетащить файл в окно терминала. Терминал поймёт, что вы имели в виду «путь до этого файла», и подставит данные сам.
После запуска у нас попросят пароль от сервера — вводим его и видим статистику отправки файла:
Переключаемся обратно в SSH-соединение и проверяем, что файл скопировался и лежит в папке. Для этого вводим две команды: первая перейдёт в эту папку, а вторая покажет её содержимое:
cd bot
ls
Готовим файл для работы службы
Нам нужно, чтобы система сама следила за тем, чтобы скрипт работал всё время и запускался после перезагрузки. В Linux за это отвечают службы — одну из таких служб мы сейчас и сделаем.
Создаём на компьютере новый файл bot.service и вставляем туда такое:
[Unit]
Description=tg-bot
After=multi-user.target
[Service]
User=root
Group=root
Type=simple
Restart=always
ExecStart=/usr/bin/python3 /bot/bot.py
[Install]
WantedBy=multi-user.target
Два самых важных параметра — это путь к нашему скрипту (/bot/bot.py) и название службы: tg-bot. Название может быть любым, а вот путь к скрипту нужно указать точно.
Теперь закидываем этот файл на сервер в папку /usr/lib/systemd/system. Для этого в командной строке компьютера пишем:
scp /Users/mihailpolanin/Downloads/bot.service mpolyanin@77.222.61.9:/usr/lib/systemd/system
Как и раньше, не забудьте заменить адрес до файла .service на вашем компьютере, а также имя пользователя и адрес сервера. Первый адрес можно не писать вручную, а перетащить файл в терминал сразу после набора команды scp.
Запуск службы
Теперь нам нужно перезагрузить все службы, чтобы наш файл тоже попал в общий список для запуска. Открываем SSH-консоль и выполняем там такую команду:
sudo systemctl daemon-reload
И сразу включим наш сервис, чтобы он не отключался при перезагрузке сервера:
sudo systemctl enable bot.service
Всё, можно запускать наш телеграм-бот как службу. Вот основные команды для этого:
- sudo systemctl start bot.service — запустить службу;
- sudo systemctl stop bot.service — остановить службу;
- sudo systemctl status bot.service — посмотреть статус, работает или нет.
Что дальше
В следующий раз сделаем ещё круче — настроим систему мониторинга на сервере, чтобы нам на почту приходило сообщение, когда служба перезапускается или останавливается с ошибкой. Подпишитесь, чтобы не пропустить.
Вёрстка:
Кирилл Климентьев
Содержание
- Как выполнить скрипт python по расписанию?
- 3 ответов
- формат для crontab
- 7 ответов
- Автоматизируйте свои скрипты Python с помощью планировщика задач
- Методы
- Создание исполняемого файла Windows для запуска Python
- Настроить задачу в планировщике задач Windows
- Давайте начнем!
- Результат
- В заключение…
- об авторе
- Библиотека schedule – CRON на Python
- Celery
- Как выполнить скрипт Python по расписанию?
- 3 ответа
- Формат для crontab
Как выполнить скрипт python по расписанию?
У меня есть два Python scripts на моей машине, которую я хочу выполнить два раза в день в определенный период времени. Как автоматизировать эту задачу? Поскольку я буду вдали от дома и, следовательно, моего компьютера на некоторое время, я хочу загрузить их на сайт и быть выполненным оттуда автоматически без меня.
Как я могу это сделать?
3 ответов
формат для crontab
каждая из секций разделена пробелом, а последняя секция имеет один или несколько пространства в нем. В разделах 1-5 не допускаются пробелы, только между ними. Разделы 1-5 используются для указания времени и частоты выполнения задачи. Вот как выложена работа cron:
минута (0-59), час (0-23, 0 = полночь), день (1-31), месяц (1-12), день недели (0-6, 0 = воскресенье), команда
01 04 1 1 1 /usr/bin/somedirectory/somecommand
приведенный выше пример будет запускать /usr/bin/somedirectory / somecommand в 4:01 утра 1 января плюс каждый понедельник в январе. Звездочка ( * ) можно использовать так, чтобы каждый экземпляр (каждый час, каждый будний день, каждый месяц и т. д.) периода времени используется. Код:
01 04 * * * /usr/bin/somedirectory/somecommand
приведенный выше пример будет запускать /usr/bin/somedirectory / somecommand в 4:01 утра каждый день каждого месяца.
значения, разделенные запятыми, могут использоваться для выполнения более одного экземпляра конкретной команды в течение периода времени. Значения, разделенные черточкой, можно использовать для непрерывного выполнения команды. Код:
01,31 04,05 1-15 1,6 * /usr/bin/somedirectory/somecommand
приведенный выше пример будет работать /usr/bin/somedirectory/somecommand в 01 и 31 часов после 4: 00 утра и 5:00 утра с 1 по 15 января каждого года.
текст «/usr/bin/somedirectory/somecommand» в приведенных выше примерах указывает задачу, которая будет выполняться в указанное время. Рекомендуется использовать полный путь к нужной команды, как показано в приведенных выше примерах. Введите который somecommand в терминале найти полную путь к кому-то. Crontab начнет работать, как только он будет правильно отредактирован и сохранен.
вы можете запустить скрипт несколько раз за единицу времени. Например, если вы хотите запускать его каждые 10 минут, используйте следующую запись crontab (выполняется в минутах, делимых на 10: 0, 10, 20, 30, etc.)
Источник
Windows 10 Python 3.5.2
7 ответов
Создание exe должно быть лучшим методом. Но если вы хотите запустить его с помощью планировщика задач, вы можете сделать это следующим образом:
Чтобы гарантировать, что ваш скрипт Python будет работать независимо от учетной записи входа, которую использует задача расписания, и чтобы избежать путаницы в том, какая версия Python используется в смешанных средах (64-разрядной или 32-разрядной), рекомендуется запускать исполняемый файл Python с имя вашего файла Python в качестве аргумента для исполняемого файла.
Предположим, что вы хотите запустить скрипт E: My script.py. Вместо непосредственного запуска сценария, укажите планировщику задач запустить python.exe со сценарием в качестве аргумента. Например:
C: Python27 ArcGIS10.2 python.exe «E: My script.py»
Расположение python.exe зависит от вашей установки. Если вы не знаете, где это, вы можете обнаружить его местоположение; скопируйте и вставьте следующий код в новый скрипт Python, затем выполните скрипт. Сценарий распечатает расположение python.exe, а также другую информацию о вашей среде Python.
После определения местоположения python.exe, это то, что вводится на панели действий планировщика задач:
Если в вашем скрипте есть дополнительные аргументы (параметры), укажите их после пути к вашему скрипту. Надеюсь это поможет.
Я почти потерял свои волосы из-за этого. Я всегда получал 0x1 в результате выполнения описанного выше. Давний опытный администратор Windows сказал мне это:
Создайте командный файл:
Затем укажите пакетный файл в части действия конфигурации задачи. Следует также позаботиться о том, чтобы пользователь, выполняющий сценарий, мог получить доступ ко всем файлам, написанным во время выполнения программы на python.
Я попытался использовать скрипт в качестве параметра и python exe в программе / скрипте. Сначала я получаю сообщение об ошибке «Запланированные задачи Windows не выполняются». Затем после некоторой настройки вокруг я получил ошибку 0x1, которая ничего мне не сказала.
По какой-то причине планировщик задач Windows запускает python.exe в среде, где они терпят неудачу в операторах import-модуля. Мне пришлось использовать обходной путь, используя CMD.exe и передать команду для запуска сценария Python в данной папке.
Затем вкладка параметров:
Не уверен, что является причиной этого. Ранее описанные решения у меня не сработали.
Сценарий, который вы выполняете, будет exe, найденным в вашем каталоге python ex) C: Python27 python.exe
«Аргументом» будет путь к вашему сценарию, например) C: Path To Script.py
Так что думайте об этом так: технически вы не выполняете свой сценарий как запланированное задание. Вы выполняете исполняемый файл root для вашего компьютера с вашим скриптом, который подается в качестве параметра.
Ответ Бисваранджана Найка работает хорошо, пока ваш сценарий не занимает много времени, чтобы закончить.
Я использую немного другой подход в планировщике задач Windows:
В текстовом поле «Программа / скрипт» вы указываете путь к исполняемому файлу Python (в моем случае это папка virtualenv).
«Добавить аргументы» = просто имя вашего скрипта Python.
«Start in» = полный путь вашего скрипта Python (без name.py).
Таким образом, скрипт запускается, консоль остается открытой и ждет до конца.
Это сработало для меня, вы можете попробовать с панелью действий: Панель действий
Установите флажок «Запускать с наивысшими привилегиями» на вкладке «Общие» и лучше выбрать «Запускать новый экземпляр параллельно» в раскрывающемся меню на вкладке «Настройки».
В конце концов, вы можете установить расписание для задачи на вкладке «Триггеры», чтобы проверить влияние изменений (не забудьте выбрать «Выполнить, вошел ли пользователь в систему или нет» на вкладке «Общие»).
Это абсолютно сработало для меня. Я использую Windows 10 Professional Edition, и мне понадобилось почти 6 месяцев, чтобы получить это решение. Спасибо предложению, сделанному выше.
Источник
Автоматизируйте свои скрипты Python с помощью планировщика задач
Дата публикации Jun 30, 2019
Запускать мои скрипты Python каждый день слишком хлопотно.
Мне нужен способ периодически запускать мои скрипты Python
Представьте, что ваш менеджер просит вас проснуться среди ночи, чтобы запустить сценарий. Это будет ваш самый большой кошмар. Вы просыпаетесь преждевременно, подвергаетесь воздействию ужасного синего света и избегаете приличных снов каждую полночь.
Как любой специалист в области данных, вам может потребоваться запустить несколько сценариев для создания отчетов или развертывания аналитического конвейера. Следовательно, вам нужно узнать опланировщикичтобы не испортить выходные.
Каждый инженер данных и ученый в один момент времени должен выполнять периодические задачи.
К счастью, с помощью Task Scheduler вы теперь можете запускать свой скрипт Python для выполнения периодических задач каждый день / неделю / месяц / год в зависимости от ваших потребностей.
В этом уроке вы узнаете, как запустить планировщик задач длявеб-данные из Lazada(электронная коммерция) и поместите его вСУБД SQLiteБаза данных.
Это быстрый способ запустить ваш скрипт автоматически!
Методы
В этом руководстве мы будем использовать планировщик задач Windows для запуска сценария bat, который будет запускать сценарии Python. Для выполнения этих скриптов у нас есть два простых шага:
Однако, если вы являетесь пользователем Linux и не имеете доступного планировщика задач Windows, вам следует использоватьcron планировщики,
Создание исполняемого файла Windows для запуска Python
Используя bat-файл в качестве нашего исполняемого файла, мы сохраним наш скрипт run в файле, а затем дважды щелкните файл bat, чтобы выполнить команду cmd (командная строка) для запуска скрипта python.
После того, как вы дважды щелкнете по этому файлу bat, Windows откроет вашу командную строку и запустит инструмент веб-поиска. Чтобы запланировать этот двойной щелчок / выполнение, мы подключим наш планировщик задач к файлу bat.
Настроить задачу в планировщике задач Windows
Планировщик задач Windowsявляется приложением Windows по умолчанию для управления задачами в ответ на триггер на основе событий или времени. Например, вы могли бы предложить определенный щелчок и компьютерные действия (такие как перезагрузка) или даже предложить время, каккаждый первый день финансового кварталавыполнить задачу.
В более широком плане эта задача будет содержать сценарий и метаданные, чтобы определить, что и как будет выполняться действие. Вы можете добавить определенный контекст безопасности в аргумент и контролировать, где планировщик будет запускать программу. Windows будет сериализовать все эти задачи как.JOBфайлы в специальной папке под названиемПапка задач,
В этом руководстве мы собираемся установить событие, основанное на времени, для запуска нашего приложения и вывода данных в SQLite. Всего там
Давайте начнем!
2.Нажмите Create Basic Task в правом окне.,
Вы должны указывать имя задачи (например, веб-очистка) и описание (например, веб-очистка и дамп SQLite автоматически каждый день в 18:00)
3.Выберите время срабатывания,
4.Выберите точное время для нашего предыдущего выбора,
Мы выберем месяц январь, апрель, июль и сентябрь, чтобы указать весь ранний финансовый квартал.
5 Запустить программу
Здесь вы сможете запускать скрипты Python, отправлять электронную почту и даже отображать сообщение. Не стесняйтесь выбирать те, которые вам наиболее удобны. Однако вам следует остерегаться устаревших задач, которые будут удалены в последующих исправлениях.
6.Вставьте скрипт вашей программы, где вы сохранили свой bat файл
Это запустит планировщик задач для вашего скрипта Python для автоматизации. Убедитесь, что вы также включили Пуск в папку вашего приложения, чтобы получить доступ ко всем соответствующим элементам (исполняемые файлы Selenium Browser / диск SQLite)
7.Нажмите Готово,
Вы можете проверить созданное расписание задач на первой странице Планировщика задач.
Поздравляем, вы установили свой первый автоматический планировщик в Windows.
Результат
Вот анимация GIF для ваших ссылок. Обратите внимание, как планировщик сам запускает скрипты Python. Как только сценарии завершатся, он извлечет извлеченное значение из базы данных SQLite. В будущем это приложение будет запускаться каждый раз, когда выполняется условие триггера, и добавлять обновленные значения в SQLite.
В заключение…
Я действительно надеюсь, что это было отличное чтение и источник вдохновения для вас, чтобы развиваться и вводить новшества.
пожалуйстаКомментарийниже, чтобы предложить и отзывы.
Если вам действительно это нравится, пожалуйста, проверьте мой профиль. Есть больше о статьях Data Analytics и Python Projects, которые будут соответствовать вашим интересам.
об авторе
Он активно консультирует SMU BI & Analytics Club, руководит начинающими учеными и инженерами в области данных из разных областей и раскрывает свой опыт для бизнеса в разработке своих продуктов.
Источник
Библиотека schedule – CRON на Python
Вам приходилось работать с CRON? Это такой сервис в nix-системах, который позволяет регулярно в определенные моменты времени запускать скрипты или программы. Штука с долгой историей, в наследство которой достался странный синтаксис для описания правил:
Что если бы мы хотели иметь свой CRON внутри программы Python, чтобы в нужные моменты времени вызывать функции? Да еще, чтобы у него был человеческий синтаксис? Такая библиотека есть и называется schedule.
Как видите, правила для задания временных интервалов прекрасно читаются, словно они предложения на английском языке. Перевод пары примеров:
В задания можно передавать параметры вот так:
Если по какой-то причине нужно отменить задание, это делается так:
Если нужно отменить группу заданий, то к ним добавляют тэги:
Метод to позволяет задать случайный интервал для выполнения задания, например от 5 до 10 секунд:
Библиотека сама не обрабатывает сама исключения в ваших задачах, поэтому, возможно, понадобится создать подкласс планировщика, как в этом примере. Или декоратор, который будет отменять работу, если произошло исключение. Вот так:
Если задания занимают продолжительное время или должны выполняться параллельно, то вам самостоятельно придется организовать их выполнение в отдельных потоках.
Celery
Если вы используете в проекте Celery, то, вероятно, вам не нужен schedule. В Celery и так есть отличный CRON:
Специально для канала @pyway. Подписывайтесь на мой канал в Телеграм @pyway 👈
Источник
Как выполнить скрипт Python по расписанию?
У меня есть два Python scripts на моей машине, которые я хочу выполнять два раза в день в течение определенного периода времени. Как мне автоматизировать эту задачу? Поскольку я на некоторое время буду вдали от дома и, следовательно, от своего компьютера, я хочу загрузить их на сайт и автоматически выполнять без каких-либо действий.
Как я могу это сделать?
3 ответа
Формат для crontab
Каждый из разделов разделен пробелом, а последний раздел содержит один или несколько пробелов. В разделах 1-5 не допускаются пробелы, только между ними. Разделы 1-5 используются, чтобы указать, когда и как часто вы хотите, чтобы задача была выполнена. Вот как устроена работа cron:
Минута (0-59), час (0-23, 0 = полночь), день (1-31), месяц (1-12), день недели (0-6, 0 = воскресенье), команда
01 04 1 1 1 /usr/bin/somedirectory/somecommand
Приведенный выше пример будет запускать / usr / bin / somedirectory / somecommand в 4:01 утра 1 января плюс каждый понедельник января. Можно использовать звездочку (*), чтобы использовать каждый экземпляр (каждый час, каждый будний день, каждый месяц и т. Д.) Периода времени. Код:
01 04 * * * /usr/bin/somedirectory/somecommand
Приведенный выше пример будет запускать / usr / bin / somedirectory / somecommand в 4:01 утра каждый день каждого месяца.
Значения, разделенные запятыми, могут использоваться для запуска более одного экземпляра конкретной команды в течение определенного периода времени. Значения, разделенные дефисом, могут использоваться для непрерывного выполнения команды. Код:
01,31 04,05 1-15 1,6 * /usr/bin/somedirectory/somecommand
Приведенный выше пример будет запускаться /usr/bin/somedirectory/somecommand в 01 и 31 часа после 4:00 и 5:00 с 1 по 15 января и июня.
Вы можете запускать скрипт несколько раз за единицу времени. Например, если вы хотите запускать его каждые 10 минут, используйте следующую запись crontab (запускается в минутах, кратных 10: 0, 10, 20, 30 и т. Д.)
Источник
Ychenyi 38 / 39 / 7 Регистрация: 13.11.2020 Сообщений: 678 |
||||
1 |
||||
06.03.2021, 16:35. Показов 13321. Ответов 24 Метки нет (Все метки)
У меня есть программа (выводит просто пустое окно), скомпилировал в исполняемый файл с помощью pyinstaller
__________________
0 |
4029 / 2972 / 1073 Регистрация: 21.03.2016 Сообщений: 7,498 |
|
06.03.2021, 16:43 |
2 |
Решение
а как сделать так, чтобы если оно было активно а как оно может быть активно при перезапуске? процесс то будет убит.
1 |
38 / 39 / 7 Регистрация: 13.11.2020 Сообщений: 678 |
|
06.03.2021, 16:44 [ТС] |
3 |
а как оно может быть активно при перезапуске? процесс то будет убит. тут я имел ввиду, что если прога активна была ДО перезапуска, то как сделать так, чтобы и после него она включилась самостоятельно
0 |
4029 / 2972 / 1073 Регистрация: 21.03.2016 Сообщений: 7,498 |
|
06.03.2021, 16:48 |
4 |
выше описал алгоритм перезапуска
0 |
38 / 39 / 7 Регистрация: 13.11.2020 Сообщений: 678 |
|
06.03.2021, 16:49 [ТС] |
5 |
Semen-Semenich, а можно ли это сделать в коде как нибудь??
0 |
5403 / 3827 / 1214 Регистрация: 28.10.2013 Сообщений: 9,554 Записей в блоге: 1 |
|
06.03.2021, 16:52 |
6 |
без закидывания в автозапуск? Открой для себя реестр windows, где тоже есть автозапуск и туда также можно записывать любые свои данные. Собственно, приложения на windows так и поступают, сохраняя туда все что им нужно для работы. Ну а если у тебя не windows, то ты и так знаешь как планируют запуск приложения в линуксе (или не знаешь?).
1 |
38 / 39 / 7 Регистрация: 13.11.2020 Сообщений: 678 |
|
06.03.2021, 16:54 [ТС] |
7 |
Garry Galler, Semen-Semenich, то бишь мне просто нужно файл.exe закинуть туда и он будет каждый раз открываться при запуске ПК или только тогда, когда файл.exe будет убит при перезапуске а не закрыт?
0 |
5403 / 3827 / 1214 Регистрация: 28.10.2013 Сообщений: 9,554 Записей в блоге: 1 |
|
06.03.2021, 17:05 |
8 |
то бишь мне просто нужно файл.exe закинуть туда Нет Ты должен написать код. Реестр это не папка… и даже не мамка.
0 |
4029 / 2972 / 1073 Регистрация: 21.03.2016 Сообщений: 7,498 |
|
06.03.2021, 17:06 |
9 |
Garry Galler, просто прогу в автозапуск ему не катит. я так понял если прога работала и комп перезапустили то и прога должна запуститься а если не работала то и не должна. автозапуск будет ее запускать постоянно.
1 |
Ychenyi 38 / 39 / 7 Регистрация: 13.11.2020 Сообщений: 678 |
||||
06.03.2021, 17:45 [ТС] |
10 |
|||
Garry Galler, код в этом же файле, где и основной код? Добавлено через 11 секунд
просто прогу в автозапуск ему не катит. я так понял если прога работала и комп перезапустили то и прога должна запуститься а если не работала то и не должна. автозапуск будет ее запускать постоянно. все верно Добавлено через 16 минут
и при закрытии вашей проги а как это именно в коде проверить?? Добавлено через 18 минут Код else ?
0 |
3678 / 2258 / 490 Регистрация: 07.11.2019 Сообщений: 3,815 |
|
06.03.2021, 17:46 |
11 |
РешениеSemen-Semenich, такой вариант:
1 |
38 / 39 / 7 Регистрация: 13.11.2020 Сообщений: 678 |
|
06.03.2021, 17:48 [ТС] |
12 |
а хотя, при первом запуске там же пустая строка, и поэтому он даже не откроется Добавлено через 1 минуту
0 |
Garry Galler 5403 / 3827 / 1214 Регистрация: 28.10.2013 Сообщений: 9,554 Записей в блоге: 1 |
||||
06.03.2021, 17:56 |
13 |
|||
а как сделать так чтобы она себя туда записала и удалила?
2 |
Semen-Semenich 4029 / 2972 / 1073 Регистрация: 21.03.2016 Сообщений: 7,498 |
||||
06.03.2021, 17:57 |
14 |
|||
если окно закрыть крестиком то в файле будет 1 а если убить процесс то в файле будет 0. теперь пишете скрипт который читает этот файл и если там 1 то запускает этот. скрипт прописываете в автозапуск
1 |
5403 / 3827 / 1214 Регистрация: 28.10.2013 Сообщений: 9,554 Записей в блоге: 1 |
|
06.03.2021, 18:05 |
15 |
Ну или как у Semen-Semenich, что почти тоже самое, только через оконные события.
теперь пишете скрипт который читает этот файл и если там 1 то запускает этот. скрипт прописываете в автозапуск А зачем такие сложности? Сама прога и должна писать себя в реестр и удалять себя же. Или я не понял?
0 |
4029 / 2972 / 1073 Регистрация: 21.03.2016 Сообщений: 7,498 |
|
06.03.2021, 18:09 |
16 |
Garry Galler, я тоже сразу ваш вариант не понял. получается при запуске прога прописывается в автозапуск если прога завершена корректно то удаляет себя из автозапуска. так конечно проще. просто с таким еще не сталкивался и не в курсе про atexit и написал свой велосипед. пойду изучать этот модуль.
0 |
194 / 160 / 41 Регистрация: 13.05.2019 Сообщений: 828 |
|
06.03.2021, 18:11 |
17 |
Кидай экзешник в папку по этому пути: C:UsersuserAppDataRoamingMicrosoftWindowsSt art MenuProgramsStartup
0 |
38 / 39 / 7 Регистрация: 13.11.2020 Сообщений: 678 |
|
06.03.2021, 18:15 [ТС] |
18 |
Matrix3007, и все??
0 |
194 / 160 / 41 Регистрация: 13.05.2019 Сообщений: 828 |
|
06.03.2021, 18:23 |
19 |
Ychenyi, Я не пробовал. Попробуй, потом отпишись.
0 |
Garry Galler 5403 / 3827 / 1214 Регистрация: 28.10.2013 Сообщений: 9,554 Записей в блоге: 1 |
||||
06.03.2021, 18:43 |
20 |
|||
Решение
Добавлено через 2 минуты
1 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
06.03.2021, 18:43 |
20 |