Job queue: Difference between revisions

From Saintapedia
Jump to navigation Jump to search
No edit summary
 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{Breadcrumbs|align=right|officialwebsite=no|wikipedia=yes}}
{{Breadcrumbs|align=right|officialwebsite=no|wikipedia=yes|mediawiki=yes}}


The '''job queue''' in MediaWiki is a system designed to handle tasks that are too time-consuming or resource-intensive to be performed during a normal web request-response cycle.  
The '''job queue''' in MediaWiki is a system designed to handle tasks that are too time-consuming or resource-intensive to be performed during a normal web request-response cycle.  
Line 13: Line 13:


=== Cron job ===
=== Cron job ===
<code>
<syntaxhighlight lang="bash">
#!/bin/bash
#!/bin/bash
# Put the MediaWiki installation path on the line below
# Put the MediaWiki installation path on the line below
MW_INSTALL_PATH="/home/www/www.mywikisite.example/mediawiki"
MW_INSTALL_PATH="/home/www/www.mywikisite.example/mediawiki"
RUN_JOBS="$MW_INSTALL_PATH/maintenance/runJobs.php --maxtime=3600"
RUN_JOBS="$MW_INSTALL_PATH/maintenance/runJobs.php --maxtime=60"
echo Starting job service...
echo Starting job service...
# Wait a minute after the server starts up to give other processes time to get started
# Wait a minute after the server starts up to give other processes time to get started
sleep 60
sleep 1
echo Started.
echo Started.
while true; do
while true; do
Line 27: Line 27:
php $RUN_JOBS --type="enotifNotify"
php $RUN_JOBS --type="enotifNotify"
# Everything else, limit the number of jobs on each batch
# Everything else, limit the number of jobs on each batch
# The --wait parameter will pause the execution here until new jobs are added,
# The <tvar name=1>--wait</tvar> parameter will pause the execution here until new jobs are added,
# to avoid running the loop without anything to do
# to avoid running the loop without anything to do
php $RUN_JOBS --wait --maxjobs=20
php $RUN_JOBS --wait --maxjobs=20
# Wait some seconds to let the CPU do other things, like handling web requests, etc
# Wait some seconds to let the CPU do other things, like handling web requests, etc.
echo Waiting for 10 seconds...
echo Waiting for 10 seconds...
sleep 10
sleep 10
done
done
</code>
</syntaxhighlight>


=== Docker ===
=== Docker ===

Latest revision as of 19:27, 5 October 2024

Job queue on Wikipedia
Job queue on Mediawiki

The job queue in MediaWiki is a system designed to handle tasks that are too time-consuming or resource-intensive to be performed during a normal web request-response cycle.

The job queue allows MediaWiki to defer tasks that do not need immediate execution. This includes operations like updating link tables when templates change, sending notification emails, re-rendering pages after template edits, or any batch processing tasks.

Saintapedia reference

Example

Cron job

#!/bin/bash
# Put the MediaWiki installation path on the line below
MW_INSTALL_PATH="/home/www/www.mywikisite.example/mediawiki"
RUN_JOBS="$MW_INSTALL_PATH/maintenance/runJobs.php --maxtime=60"
echo Starting job service...
# Wait a minute after the server starts up to give other processes time to get started
sleep 1
echo Started.
while true; do
	# Job types that need to be run ASAP no matter how many of them are in the queue
	# Those jobs should be very "cheap" to run
	php $RUN_JOBS --type="enotifNotify"
	# Everything else, limit the number of jobs on each batch
	# The <tvar name=1>--wait</tvar> parameter will pause the execution here until new jobs are added,
	# to avoid running the loop without anything to do
	php $RUN_JOBS --wait --maxjobs=20
	# Wait some seconds to let the CPU do other things, like handling web requests, etc.
	echo  Waiting for 10 seconds...
	sleep 10
done

Docker

* * * * * docker exec web php maintenance/runJobs.php --maxjobs 700 --maxtime=55

sudo crontab -e

External