Why you shouldn’t use “Cron Jobs?”


Executing a task on an interval or at a specific time is a common problem with application developers.

Many software developers think, I know how to solve this, I’ll use cron.

A few problems with cron:

  1. Smallest resolution is 1 minute — If a task needs to run every 30 seconds, you can’t do it with cron.
  2. Error handling — If a job fails, what should happen? Solutions have been built to solve this single problem. Developers love adding more band-aids rather than admitting there is a better way. Deja Vu?
  3. Logging — Crons don’t log, unless you tell them too. It is rare to see people log output of their cron jobs.
  4. Working with cron pulls you out of the application — cron is a system level process. Not an application process. It’s challenging to give application developers access to anything at a system level. Developers shouldn’t care where their application runs… A good example of this is timezones. If a system person changes the timezone of a server, the cron may run at a different time than expected. The less the app developers have to worry about what they run on, the better.
  5. Not enough reasons? You can read more about how cron doesn’t work at this StackExchange thread.

There is a better way.

Background jobs and a scheduler

Developers of Web Applications are aware of a common problem of offloading a task that can hold up a web request by putting it into a background job. Python’s most famous background task worker is Celery. Celery has a built in feature called Beat, which is a scheduler.

Here is how it works.

Create a celery task. This is the same type of task you create when doing background work.

Then add it to the Beat scheduler. Celery Beat is a service which runs and at regular intervals and puts things onto a celery queue.

You however, aren’t limited to “cron style” jobs. You can also run things on regular intervals.

ProTip™ — Tasks can call other tasks.

Please, hear my cry:

Stop using cron for regular application tasks.

Related articles


What’s Rule 701 and what’s recently changed?

Learn more about Rule 701, recent updates, and how to stay compliant at your company. Everything from the history of Rule 701 to the most recent changes.

What is a 409A valuation?

Learn everything you need to know about section 409A of the internal revenue code. From what is a 409A valuation to 409A methodologies and process.

Equity 101 – Equity Basics for Founders

Learn the basics of equity, how to distribute equity to early employees, and what a cap table is

eShares, Inc. DBA Carta, Inc. is a transfer agent registered with the U.S. Securities and Exchange Commission. The services and information described in this communication are provided to you “as is” and “as available” without warranties of any kind, expressed, implied or otherwise, including but not limited to all warranties of merchantability, fitness for a particular purpose, or non-infringement. Neither eShares, Inc. DBA Carta, Inc. nor any of its affiliates will be liable for any damages, including without limitation direct, indirect, special, punitive or consequential damages, caused in any way or arising from the use of the services or reliance upon the information provided in this communication or in connection with any failure of performance, error, omission, interruption, defect, delay in operation or transmission, computer virus or line or system failure. Transfer Agent services for DTC-eligible registered companies provided by Philadelphia Stock Transfer, a Carta affiliate. Carta Securities LLC is a broker-dealer and a member of FINRA and SIPC. Contact: eShares, Inc. DBA Carta, Inc., 195 Page Mill Road, Suite 101, Palo Alto, CA 94306.

© 2018 ESHARES, INC. DBA CARTA, INC.