Python script not properly executing using Windows Task Scheduler - python

Created a Python script that gets data from SQL Server, then writes the data to an Excel spreadsheet using Pandas and xlsxwriter. Then, the same script uses the win32 client library to send the newly created file via email from my Outlook address to certain recipients.
Now, since I need this to be fully automated, I attempted to have Windows Task Scheduler try to do this at a scheduled time. It creates the Excel sheet properly, but it fails to send the email. Oddly enough, if I run the Python script through a Python IDE, the entire process executes successfully without issue. I have verified that the email was sent and that I received it. The email neither sends nor do I receive it when using WTS.
Are there any work-arounds for this? Should I use a 3rd party task scheduler instead?

The Windows Task Scheduler has some problems, because you will probably not have enough rights to send an email. Try to manually deactivate and again activate the scheduled task in the WTS-program as an administrator, if that does not work, you will have to take a 3rd party task scheduler.

Related

Python - Win32Com Client Dispatch Hanging as Scheduled Tasks

I have a Python Script, which uses win32com.client.dispatch and redemption in order to connect to an instance of Outlook and harvest some data from a public folder.
When I execute this script on command line it works just fine.
Adding it as a scheduled task, it appears to get hung at the line Outlook = win32com
I added Event Log statements along the way to see where it is getting hung, other than that I don't have much in the way of error logs (since it doesnt actually fail)
Is there any sort of security settings I should be concerned about or anything I am not thinking of? Everything works fine with a standard python call in the CMD.
Scheduler runs as a service, and office apps (Outlook included) should nto be used in a service.

Running python code as a service on windows server 2012 R2

I have a python script which collects data from Twitter and stores into MongoDb. I need to run this code on the server as a service.
However, only 2 users can remain logged into the server at any given time and therefore If I log out my account, the python script would stop working and data collection will stop.
My question is - How can I run this script as a service on the server such that it keeps running irrespective of whichever user is logged in?
Task Scheduler is the easiest solution I know of. You can use it to run the code at startup as the NT AUTHORITY\SYSTEM user and automatically restart on failure. In case you need it, there's a basic overview of Task Scheduler here.

sending mouse/keyboard events on remote desktop

So I am trying to set up a Continuous integration environment using Jenkins.
One of the build step requires a series of mouse actions/movements to accomplish a task in Excel. I have already written a python script using the ctypes library to do this.
The script works perfectly fine if I run it either through Jenkins or on the server itself when I am actively logged in to the server using remote desktop connection, but as soon as I minimize/close the connection and then run the script from Jenkins, it seems the mouse events never get executed. Is there something I can add to the script to make this work? Thanks for any help you can provide.

Python script involving Outlook through win32com runs when double-clicking, but not through task scheduler

I have a python script that sends out an email using win32com and Outlook. The script runs without a hitch when I run it through an interpreter or double-click on the script. However, when I run it through the Task Scheduler, I get the following message:
"Something went wrong. We couldn't start your program. Please try starting it again. If it won't start, try repairing Office from 'Programs and Features' in the Control Panel."
I'm using Office 365, and Python 2.6. I've tried running the script through the scheduler after killing the Outlook process, but I ran into the same issue.
Office isn't designed to run as a service, and needs to be run interactively. You'll need to change your task configuration in Task Scheduler to run the task as the currently logged-in user, on the current user's desktop, with the current user's privileges.

Execute shell command when receiving properly constructed email

Having failed to find an answer to this elsewhere, I am opening this question more widely.
I need to execute a bash shell command when a properly constructed email is received (I'm using GMail) using Python. I have previously used Python to send emails, but the only solution I have yet found is to use feedparser and Google Atom, which I don't like. I would suggest that a keyword could exist in either the subject or body of the email; security is not an issue (I don't think) as the consequence is benign.
The bash command to execute will actually call another scripts to send the latest jpg from my Python motion detection routine which runs independently.
Here is how I would construct a script.
Create a script which polls the GMail inbox and then executes necessary scripts if correct incoming emails are detected.
Use IMAPClient to handle GMail reading.
Detect the incoming email format using Python built-in string matching or regular expressions.
Execute the bash script using Python subprocess module.
Run the script as a cron job on the server.
Deploy the script and necessary dependencies using virtualenv.
procmail does this kind of thing trivally - checking the format of an incoming email and running a shell script that is. There's no need to reinvent the wheel
I'm not entirely clear from your description how python fits in to what you want to do..
Hope this helps!

Categories

Resources