Difference between revisions of "Background Tasks"
Barrymavin (Talk | contribs) |
Barrymavin (Talk | contribs) (→--runtime) |
||
(20 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
It is a common requirement to be able to schedule the running of background scripts. | It is a common requirement to be able to schedule the running of background scripts. | ||
− | Typical uses of background scripts are the loading of data from external | + | Typical uses of background scripts are the loading of data from external data sources, generating and emailing HTML reports, periodic database admin, data consolidation and analysis and much more. |
− | + | You can run background scripts written in Lianja/VFP, Python, PHP and/or JavaScript by specifying command line options to the '''lianjarun''' command. | |
− | These scripts run independently of | + | Alternatively, you can use the linux '''wget''' command in a linux cron job (or the windows task scheduler) to run an rsp, jssp or pysp page at periosic intervals as specified in the cron tab entry. |
+ | |||
+ | You can download wget for windows from: | ||
+ | https://gnuwin32.sourceforge.net/packages/wget.htm | ||
+ | |||
+ | <pre> | ||
+ | wget http://localhost:8001/apps/yourworker/yourworker.rsp | ||
+ | </pre> | ||
+ | |||
+ | These scripts run independently of Lianja but have full access to the [[:Category:Framework_Classes|Lianja Framework]] (GUI and non-GUI) including the '''Database''' and '''Recordset''' classes. | ||
This provides the ability to schedule the running of scripts using cron on linux, task scheduler on windows or launchd on macOS. | This provides the ability to schedule the running of scripts using cron on linux, task scheduler on windows or launchd on macOS. | ||
− | [https://www. | + | [https://www.redhat.com/sysadmin/automate-linux-tasks-cron Linux cron] |
[https://msdn.microsoft.com/en-us/library/windows/desktop/bb736357(v=vs.85).aspx Windows Task Scheduler] | [https://msdn.microsoft.com/en-us/library/windows/desktop/bb736357(v=vs.85).aspx Windows Task Scheduler] | ||
Line 15: | Line 24: | ||
[https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/ScheduledJobs.html macOS launchd] | [https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/ScheduledJobs.html macOS launchd] | ||
+ | ==--input and --output== | ||
You specify the input file using the -i (--input) command line switch and the output file using the -o (--output) command line switch. | You specify the input file using the -i (--input) command line switch and the output file using the -o (--output) command line switch. | ||
You can, for example, generate an HTML report and email that to someone using the [https://aws.amazon.com/ses/pricing/ Amazon AWS Simple Email Service] if you have an AWS account. | You can, for example, generate an HTML report and email that to someone using the [https://aws.amazon.com/ses/pricing/ Amazon AWS Simple Email Service] if you have an AWS account. | ||
− | + | '''Examples:''' | |
Run a Lianja/VFP script in the current directory. | Run a Lianja/VFP script in the current directory. | ||
<pre> | <pre> | ||
− | + | lianjarun -i myscript.dbo -o myreport.html | |
</pre> | </pre> | ||
Line 30: | Line 40: | ||
<pre> | <pre> | ||
− | + | lianjarun -i app:/lianjademo/lianjademo_pythondb.py -o myreport.html | |
</pre> | </pre> | ||
Line 36: | Line 46: | ||
<pre> | <pre> | ||
− | + | lianjarun -i app:/lianjademo/lianjademo_phpdb.php -o myreport.html | |
</pre> | </pre> | ||
Line 42: | Line 52: | ||
<pre> | <pre> | ||
− | + | lianjarun -i app:/lianjademo/lianjademo_javascriptdb.js -o myreport.html | |
</pre> | </pre> | ||
− | Notice that these examples will access the development directories as they run ''' | + | Notice that these examples will access the development directories as they run '''lianjarun'''. If you want to access the runtime directories use the '''lianjarun''' command with the --runtime command line switch [[#--runtime|as shown below]]. |
− | You can find a full list of | + | You can find a full list of [[Command_Line_Switches|command line switches here.]] |
− | [[Command_Line_Switches|here.]] | + | |
− | You can perform database admin tasks from the console or in background scripts. | + | You can perform [[:Category:Databases|database admin]] tasks from the console or in background scripts. |
+ | ==--command== | ||
The -c (--command) command line switch allows multiple commands to be concatenated into a script. Each line should be separated with a semi colon and no block statements are supported e.g if, for, do while etc. | The -c (--command) command line switch allows multiple commands to be concatenated into a script. Each line should be separated with a semi colon and no block statements are supported e.g if, for, do while etc. | ||
<pre> | <pre> | ||
− | + | lianjarun -c "open database southwind;select top 5 customerid,contactname,companyname \ | |
from customers" | from customers" | ||
CUSTOMERID CONTACTNAME COMPANYNAME | CUSTOMERID CONTACTNAME COMPANYNAME | ||
Line 71: | Line 81: | ||
<pre> | <pre> | ||
− | + | lianjarun -c "open database southwind;select top 5 customerid,contactname,companyname \ | |
from customers" -o mydata.txt | from customers" -o mydata.txt | ||
</pre> | </pre> | ||
+ | |||
+ | ==--runtime== | ||
+ | If --runtime is specified, the commands operate against the runtime/deployed data and files, otherwise they operate within the context of the App Builder. | ||
+ | <pre>lianjarun --runtime -c "select top 5 customerid,contactname,companyname \ | ||
+ | from southwind!customers"</pre> | ||
+ | |||
+ | <pre>lianjarun --runtime -i lib:/myscript.dbo -o myoutput.txt</pre> | ||
+ | |||
+ | ==Handling work queues== | ||
+ | |||
+ | By using Lianja/KVS in the client you can queue up work to be processed by a background task. This could be emails, PDF document generation etc. | ||
+ | |||
+ | See [[Key-Value_Store|Lianja/KVS]] for details. | ||
+ | |||
+ | [[Category:Lianja v4.2]] | ||
+ | [[Category:Lianja v5.3]] | ||
+ | [[Category:Lianja v6.0]] |
Latest revision as of 22:31, 5 June 2024
It is a common requirement to be able to schedule the running of background scripts.
Typical uses of background scripts are the loading of data from external data sources, generating and emailing HTML reports, periodic database admin, data consolidation and analysis and much more.
You can run background scripts written in Lianja/VFP, Python, PHP and/or JavaScript by specifying command line options to the lianjarun command.
Alternatively, you can use the linux wget command in a linux cron job (or the windows task scheduler) to run an rsp, jssp or pysp page at periosic intervals as specified in the cron tab entry.
You can download wget for windows from: https://gnuwin32.sourceforge.net/packages/wget.htm
wget http://localhost:8001/apps/yourworker/yourworker.rsp
These scripts run independently of Lianja but have full access to the Lianja Framework (GUI and non-GUI) including the Database and Recordset classes.
This provides the ability to schedule the running of scripts using cron on linux, task scheduler on windows or launchd on macOS.
--input and --output
You specify the input file using the -i (--input) command line switch and the output file using the -o (--output) command line switch.
You can, for example, generate an HTML report and email that to someone using the Amazon AWS Simple Email Service if you have an AWS account.
Examples:
Run a Lianja/VFP script in the current directory.
lianjarun -i myscript.dbo -o myreport.html
Run a python script in the lianjademo app.
lianjarun -i app:/lianjademo/lianjademo_pythondb.py -o myreport.html
Run a PHP script in the lianjademo app.
lianjarun -i app:/lianjademo/lianjademo_phpdb.php -o myreport.html
Run a JavaScript script in the lianjademo app.
lianjarun -i app:/lianjademo/lianjademo_javascriptdb.js -o myreport.html
Notice that these examples will access the development directories as they run lianjarun. If you want to access the runtime directories use the lianjarun command with the --runtime command line switch as shown below.
You can find a full list of command line switches here.
You can perform database admin tasks from the console or in background scripts.
--command
The -c (--command) command line switch allows multiple commands to be concatenated into a script. Each line should be separated with a semi colon and no block statements are supported e.g if, for, do while etc.
lianjarun -c "open database southwind;select top 5 customerid,contactname,companyname \ from customers" CUSTOMERID CONTACTNAME COMPANYNAME ALFKI Maria Anders Alfreds Futterkiste ANATR Ana Trujillo Ana Trujillo Emparedado AROUT Thomas Hardy Around the Horn again BERGS Christina Berglund Berglunds snabbkop BLAUS Hannah Moos Bill's furniture store 5 records selected in <1ms lianja -c "backup database southwind;" lianja -c "optimize database southwind;"
If required you can redirect output using the -o switch.
lianjarun -c "open database southwind;select top 5 customerid,contactname,companyname \ from customers" -o mydata.txt
--runtime
If --runtime is specified, the commands operate against the runtime/deployed data and files, otherwise they operate within the context of the App Builder.
lianjarun --runtime -c "select top 5 customerid,contactname,companyname \ from southwind!customers"
lianjarun --runtime -i lib:/myscript.dbo -o myoutput.txt
Handling work queues
By using Lianja/KVS in the client you can queue up work to be processed by a background task. This could be emails, PDF document generation etc.
See Lianja/KVS for details.