I'm trying to run python script from Azure webjob. This is what I've done following this link
https://<webapp name>.scm.azurewebsites.net
and installed Python 364x86
via Site Extensions tab Python 364x86
is installed in the following path: D:\home\python364x86
trading.py
in D:\home\python364x86
run.bat
file with this line of code D:\home\python364x86\python.exe trading.py
run.bat
and trading.py
in the webjob zip file[09/07/2019 07:02:00 > 0dd02c: SYS INFO] Status changed to Initializing
[09/07/2019 07:02:00 > 0dd02c: SYS INFO] Run script 'run.bat' with script host - 'WindowsScriptHost'
[09/07/2019 07:02:00 > 0dd02c: SYS INFO] Status changed to Running
[09/07/2019 07:02:00 > 0dd02c: ERR ] The filename, directory name, or volume label syntax is incorrect.
[09/07/2019 07:02:00 > 0dd02c: INFO]
[09/07/2019 07:02:00 > 0dd02c: INFO] D:\local\Temp\jobs\triggered\z\2az54ret.wh4>D:\home\python364x86\python.exe trading.py
[09/07/2019 07:02:00 > 0dd02c: SYS INFO] Status changed to Failed
[09/07/2019 07:02:00 > 0dd02c: SYS ERR ] Job failed due to exit code 1
Functions.cs
public void StartTheBot()
{
// Local
//var fileName = @"C:\Users\robert\AppData\Local\Programs\Python\Python37-32\python.exe";
//var script = @"C:\python-scripts\trading.py";
// Production
var fileName = @"D:\home\python364x86\python.exe";
var script = @"D:\home\python364x86\trading.py";
var errors = "";
var results = "";
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = fileName,
Arguments = script,
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
CreateNoWindow = true
};
using (Process process = Process.Start(psi))
{
errors = process.StandardError.ReadToEnd();
results = process.StandardOutput.ReadToEnd();
}
Console.WriteLine("Errors:");
Console.WriteLine(errors);
Console.WriteLine();
Console.WriteLine("Results:");
Console.WriteLine(results);
}
Above code executes python script. It works locally, but once I deploy it to production it fails. Tried so many times, spent plethora of hours, but still unsure why prod doesn't work. Help is appreciated.
trading.py
import telegram
my_token = 'mytoken'
bot = telegram.Bot(token = my_token)
chat_id = 'mychatid'
message = 'Hello
bot.sendMessage(chat_id=chat_id, text=message)
Deploy your Python code to Azure for web apps, serverless apps, containers, and machine learning models. Take advantage of the Azure libraries (SDK) for Python to programmatically access the full range of Azure services including storage, databases, pre-built AI capabilities, and much more.
In Visual Studio, select File > New > Project. Under Create a new project, select Console Application (C#), and then select Next. Under Configure your new project, name the project WebJobsSDKSample, and then select Next. Choose your Target framework and select Create.
I tried to realize your needs with Python in WebJob and successfully make it works.
Here is my steps and sample code. My local environment is Python 3.7 on Windows 10.
Create a Python virtual environment and install python-telegram-bot
package via commands as below.
$ mkdir telegram-webjob
$ virtualenv telegram-webjob
$ cd telegram-webjob
$ Scripts\active
$ pip install python-telegram-bot
$ pip freeze
I changed your code as my sample code, then run it works fine on local, as below.
import telegram
from datetime import datetime as dt
my_token = '<my token>'
bot = telegram.Bot(token = my_token)
chat_id = '<chat id>'
message = f"Hello at {dt.now()}"
bot.sendMessage(chat_id=chat_id, text=message)
I created a new directoy named webjob
and copy my trading.py
file and all directories with their files into it, as below.
Write the startup bat script named run.bat
, the code as below.
D:\home\python364x86\python.exe trading.py
The D:\home\python364x86\python.exe
path is the python364x86
site extension installed path as the figure below.
Then, I packaged the all directories and files in the webjob
directory as a zip file, as below.
I uploaded it to Azure WebApp as a webjob, as the figure below, and start it.
Finally, it works fine for me and I can see the message interval 10 sec displayed in my telegram client.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With