Saravanan666/pypi-org huggingface dataset:
Package: scrapydart
==========ScrapydArt==========.. image:: https://secure.travis-ci.org/scrapy/scrapyd.svg?branch=master:target: http://travis-ci.org/scrapy/scrapyd.. image:: https://codecov.io/gh/scrapy/scrapyd/branch/master/graph/badge.svg:target: https://codecov.io/gh/scrapy/scrapyd==========项目演示地址==========http://scrapydart.porters.vip==========拒绝裸奔==========ScrapydArt在Scrapyd基础上新增了权限验证、筛选过滤、排序、数据统计以及排行榜等功能，并且有了更强大的API。scrapyd是世界最优秀的爬虫框架scrapy官方提供的部署控管理平台，它提供了爬虫任务调用的api、爬虫运行日志功能。但它并不提供权限验证功能，意味着只要你部署到服务器，任何人都可以访问它并且控制你的爬虫。它也不提供数据统计的功能，你不可能知道你部署的爬虫有多少、也不知道它们运行了多少次、谁的运行时间最长、更别说排行了。官方开发人员关注的重点是api功能性而非界面，所以界面（甚至可以说没有界面）不谈美观。==========ScrapydArt安装==========pip install scrapydart==========ScrapydArt启动==========scrapydart==========ScrapydArt-web界面==========http://localhost:6800--------------------------------------------------更多使用方法和ScrapydArt的详细介绍请阅读ScrapydArt文档--------------------------------------------------https://scrapydart.readthedocs.io/zh/latest/--------------------下图为ScrapydArt界面--------------------.. image:: https://github.com/dequinns/ScrapydArt/blob/master/images/scrapydart-home.png.. image:: https://github.com/dequinns/ScrapydArt/blob/master/images/scrapydart-jobs.pngScrapydArt base on Scrapyd, and added auth/filter/order…… and added new APIScrapydArt is a service for running `Scrapy`_ spiders.It allows you to deploy your Scrapy projects and control their spiders using anHTTP JSON API.The documentation (including installation and usage) can be found at(官方文档在此):https://scrapydart.readthedocs.io/zh/latest/.. image:: https://github.com/dequinns/ScrapydArt/blob/master/images/scrapydart-doc.png.. _Scrapy: https://github.com/dequinns/scrapydart
Package: scrapy-db
scrapy-dbSimilar toscrapy-redis, using the database as a queue, database-based scrapy
components.FeaturesDistributed crawling/scrapingYou can start multiple spider instances that share a single db queue. Best suitable for broad multi-domain crawls.Distributed post-processingScraped items gets pushed into a DB queued meaning that you can start as many as needed post-processing processes
sharing the items queue.Scrapy plug-and-play componentsScheduler + Duplication Filter, Base Spiders.RequirementsPython 3.7+peewee>= 3.16.0Scrapy>= 2.7.0pymysql>= 1.0.3InstallationFrom pippipinstallscrapy-dbFrom GitHubgitclonehttps://github.com/libra146/scrapy-db.gitcdscrapy-db
pythonsetup.pyinstallFrom poetrypoetryaddscrapy-dbIf you are conducting distributed crawling tasks, scraper db is a very practical scraper component that can help you
complete tasks more efficiently.UseClone the current project and run the example crawler in example-project to experience it.❗️NoticeThis repository is still under development and may be unstable.Why is there this libraryBecause I have a huge request pool, I don't have that much memory for redis to save it, so, I thought about database, I
created it with reference to scrapy-redis and it works fine.
Package: scrapy-db-pipeline
scrapy database pipelineIntroductionUse pipeline to persist item to the database, just provide the tablenameINSTALL.. code:: shellpip install scrapy_db_pipelineUsageconfigure on setting.py.. code:: pythonDB_HOST = 'localhost'
DB_USER = 'root'
DB_PASSWORD = 'password'
DB_NAME = 'db_name

ITEM_PIPELINES = {
   #...
   'scrapy_db_pipeline.pipelines.DBStorePipeline': 300,
   #...
}write your item.. code:: pythonclass CalendarItem(scrapy.Item):
    __table_name__ = 'your_table_name'
    some_item = scrapy.Field()tips: You must create the table before running Scrapy. Because I
can't know what the type of your field on the database table.TODO:database support (if I have time):mysql....
Package: scrapydd
Scrapydd is a system for scrapy spiders distributed running and scheduleing system, including server and client agent.Advantages:Distributed, easily add runner(agent) to scale out.Project requirements auto install on demand.Cron expression time driven trigger, run your spider on time.Webhook loosely couple the data crawling and data processing.Spider status insight, system will look into the log to clarify spider run status.Installing ScrapyddBy pip:pip install scrapyddYou can also install scrapydd manually:Download compressed package fromgithub releases.Decompress the packageRunpython setup.py installRun Scrapydd Serverscrapydd serverThe server default serve on 0.0.0.0:6800, with both api and web ui.
Add –daemon parameter in commmand line to run in background.Run Scrapydd Agentscrapydd agentAdd –daemon parameter in commmand line to run in background.DocsThe docs is hostedhereDocker-Composeversion:'3'services:db:image:mysqlcommand:--default-authentication-plugin=mysql_native_passwordrestart:alwaysports:-"3306:3306"volumes:-"datadb:/var/lib/mysql"environment:MYSQL_ROOT_PASSWORD:mysqlPasswordMYSQL_DATABASE:scrapyddMYSQL_USER:scrapyddMYSQL_PASSWORD:scrapyddPwdserver:image:"kevenli/scrapydd"ports:-"6800:6800"volumes:-"./server:/scrapydd"-"/var/run/docker.sock:/var/run/docker.sock"command:scrapydd serveragent:image:"kevenli/scrapydd"volumes:-"./agent:/scrapydd"-"/var/run/docker.sock:/var/run/docker.sock"links:-serverenvironment:-SCRAPYDD_SERVER=servercommand:scrapydd agentvolumes:datadb:
Package: scrapyd-dash
Scrapyd DashboardA dashboard specifically used for scrapyd servers to manipulate scrapy spiders (start, stop, check status).FeaturesScrapyd server statusTasks (add, remove, list)Authentification (Using the Django authentication system)Scheduled tasks (add, remove, list)View logsMultiple independent user supportTask performance detailsDemoDemo websiteUsername:demoPassword:demoInstallingInstall the packagepip install scrapyd_dashAdd urls to your projects urls.pyfrom django.urls import include

urlpatterns = [
    ...
    path('scrapyd_dash/', include('scrapyd_dash.urls')),
]Built WithDjango- The web framework used.ScrapyD- A service daemon to run Scrapy spiders.LogParser- A tool for parsing Scrapy log files.AuthorsDainius Preimantas-Initial work-Dainius-PContributingFork itCreate your feature branch (git checkout -b feature/fooBar)Commit your changes (git commit -am 'Add some fooBar')Push to the branch (git push origin feature/fooBar)Create a new Pull RequestLicenseThis project is licensed under the MIT License - see theLICENSEfile for details.
Package: scrapyd-egg-checksum
scrapyd-egg-checksumExtension of scrapyd to get egg's md5 checksum for distributed scrapydInstallationpip install scrapyd-egg-checksumConfigurationLocate thescrapyd.conffile and adding line likelistversions_advanced.json = scrapyd_egg_checksum.webservice.ListVersionsunder service section, the json resource name depends on you,Usagecurl http://127.0.0.1:6800/listversions_advanced.json?project=ABCyou will get like{"node_name": "Christians-Another-MacBook-Pro.local", "status": "ok", "versions": [{"version": "1_0_0", "checksum": "793afec3676f9749d1616f48dd57fe07"}, {"version": "1_0_1", "checksum": "ccb6b8841e2b5443db4bff56924527fa"}]}Use caseThis is for distributed scrapyd clusters, while in single server mode, this is useless.
Package: scrapy-deltafetch
This is a Scrapy spider middleware to ignore requests
to pages seen in previous crawls of the same spider,
thus producing a “delta crawl” containing only new requests.This also speeds up the crawl, by reducing the number of requests that need
to be crawled, and processed (typically, item requests are the most CPU
intensive).DeltaFetch middleware uses Python’sdbmpackage to store requests fingerprints.InstallationInstall scrapy-deltafetch usingpip:$ pip install scrapy-deltafetchConfigurationAdd DeltaFetch middleware by including it inSPIDER_MIDDLEWARESin yoursettings.pyfile:SPIDER_MIDDLEWARES = {
    'scrapy_deltafetch.DeltaFetch': 100,
}Here, priority100is just an example.
Set its value depending on other middlewares you may have enabled already.Enable the middleware usingDELTAFETCH_ENABLEDin yoursettings.py:DELTAFETCH_ENABLED = TrueUsageFollowing are the different options to control DeltaFetch middleware
behavior.Supported Scrapy settingsDELTAFETCH_ENABLED— to enable (or disable) this extensionDELTAFETCH_DIR— directory where to store stateDELTAFETCH_RESET— reset the state, clearing out all seen requestsThese usually go in your Scrapy project’ssettings.py.Supported Scrapy spider argumentsdeltafetch_reset— same effect as DELTAFETCH_RESET settingExample:$ scrapy crawl example -a deltafetch_reset=1Supported Scrapy request meta keysdeltafetch_key— used to define the lookup key for that request. by
default it’s Scrapy’s default Request fingerprint function,
but it can be changed to contain an item id, for example.
This requires support from the spider, but makes the extension
more efficient for sites that many URLs for the same item.deltafetch_enabled- if set to False it will disable deltafetch for some
specific request
Package: scrapy-demo-cloudwatch-log
Scrapy Demo Cloudwatch LogAdds a log line that is easy to parse with Cloudwatch filters to create a useful
metric. To enable:EXTENSIONS = {
    'scrapy_demo_cloudwatch_log.DemoLogger': 100
}Then you can use this filter expression:{ $.eventType = "ScrapyCrawlSummary" }.
It creates the demo metric$.item_scraped_count.
The$.spidercan be used as a dimension.Source code inGithub.
Package: scrapyd-heroku
scrapyd-herokuWrapper for runningScrapydinHerokuor locally as a serviceFeaturesSupport running Scrapyd service in HerokuSupport running Scrapyd service locallySupport latest version of Scrapy2.4.1and Scrapyd1.2.1Getting StartedSimplyfork this repository, update custom configurations inscrapy.conf, and deploy it to HerokuOrfrom this repo directly, and then the service will be exposed such as inhttps://scrapyd-heroku.herokuapp.com/Orpip install scrapyd-herokuand runscrapyd-herokulocallyOrfork this repositoryand runpython manage.pylocally
Package: scrapydo
ScrapyDoCrochet-based blocking API forScrapy.This module provides function helpers to runScrapyin a blocking fashion. See
thescrapydo-overview.ipynbnotebook for a quick overview of this module.InstallationUsingpip:pip install scrapydoUsageThe functionscrapydo.setupmust be called once to initialize the reactor.Example:importscrapydoscrapydo.setup()scrapydo.default_settings.update({'LOG_LEVEL':'DEBUG','CLOSESPIDER_PAGECOUNT':10,})# Enable logging displayimportlogginglogging.basicConfig(level=logging.DEBUG)# Fetch a single URL.response=scrapydo.fetch("http://example.com")# Crawl an URL with given callback.defparse_page(response):yield{'title':response.css('title').extract(),'url':response.url,}forhrefinresponse.css('a::attr(href)'):url=response.urljoin(href)yieldRequest(url,callback=parse_page)items=scrapydo.crawl('http://example.com',callback)# Run an existing spider class.spider_args={'foo':'bar'}items=scrapydo.run_spider(MySpider,**spider_args)Available Functionsscrapydo.setup()Initialize reactor.scrapydo.fetch(url, spider_cls=DefaultSpider, capture_items=True, return_crawler=False, settings=None, timeout=DEFAULT_TIMEOUT)Fetches an URL and returns the response.scrapydo.crawl(url, callback, spider_cls=DefaultSpider, capture_items=True, return_crawler=False, settings=None, timeout=DEFAULT_TIMEOUT)Crawls an URL with given callback and returns the scraped items.scrapydo.run_spider(spider_cls, capture_items=True, return_crawler=False, settings=None, timeout=DEFAULT_TIMEOUT, **kwargs)Runs a spider and returns the scraped items.highlight(code,lexer='html',formatter='html',output_wrapper=None)Highlights given code using pygments. This function is suitable for use in a IPython notebook.
Package: scrapy-do
Scrapy Do is a daemon that provides a convenient way to runScrapyspiders. It can either do it once - immediately; or it
can run them periodically, at specified time intervals. It’s been inspired byscrapydbut written from scratch. It
comes with a REST API, a command line client, and an interactive web interface.Homepage:https://jany.st/scrapy-do.htmlDocumentation:https://scrapy-do.readthedocs.io/en/latest/Quick StartInstallscrapy-dousingpip:$pipinstallscrapy-doStart the daemon in the foreground:$scrapy-do-nscrapy-doOpen another terminal window, download the Scrapy’s Quotesbot example, and
push the code to the server:$gitclonehttps://github.com/scrapy/quotesbot.git$cdquotesbot$scrapy-do-clpush-project+----------------+
| quotesbot      |
|----------------|
| toscrape-css   |
| toscrape-xpath |
+----------------+Schedule some jobs:$scrapy-do-clschedule-job--projectquotesbot\--spidertoscrape-css--when'every 5 to 15 minutes'+--------------------------------------+
| identifier                           |
|--------------------------------------|
| 0a3db618-d8e1-48dc-a557-4e8d705d599c |
+--------------------------------------+$scrapy-do-clschedule-job--projectquotesbot--spidertoscrape-css+--------------------------------------+
| identifier                           |
|--------------------------------------|
| b3a61347-92ef-4095-bb68-0702270a52b8 |
+--------------------------------------+See what’s going on:The web interface is available athttp://localhost:7654by default.Building from sourceBoth of the steps below requirenodejsto be installed.Check if things work fine:$pipinstall-rrequirements-dev.txt$toxBuild the wheel:$pythonsetup.pybdist_wheelChangeLogVersion 0.5.0Rewrite the log handling functionality to resolve duplication issuesBump the JavaScript dependencies to resolve browser caching issuesMake the error message on failed spider listing more descriptive (Bug #28)Make sure that the spider descriptions and payloads get handled properly on
restart (Bug #24)Clarify the documentation on passing arguments to spiders (Bugs #23 and #27)Version 0.4.0Migration to the Bootstrap 4 UIMake it possible to add a short description to jobsMake it possible to specify user-defined payload in each job that is passed
on as a parameter to the python crawlerUI updates to support the aboveNew log viewers in the web UI
Package: scrapy-do-heroku
Scrapy Do is a daemon that provides a convenient way to runScrapyspiders. It can either do it once - immediately; or it
can run them periodically, at specified time intervals. It’s been inspired byscrapydbut written from scratch. It
comes with a REST API, a command line client, and an interactive web interface.Homepage:https://jany.st/scrapy-do.htmlDocumentation:https://scrapy-do.readthedocs.io/en/latest/Quick StartInstallscrapy-dousingpip:$pipinstallscrapy-doStart the daemon in the foreground:$scrapy-do-nscrapy-doOpen another terminal window, download the Scrapy’s Quotesbot example, and
push the code to the server:$gitclonehttps://github.com/scrapy/quotesbot.git$cdquotesbot$scrapy-do-clpush-project+----------------+
| quotesbot      |
|----------------|
| toscrape-css   |
| toscrape-xpath |
+----------------+Schedule some jobs:$scrapy-do-clschedule-job--projectquotesbot\--spidertoscrape-css--when'every 5 to 15 minutes'+--------------------------------------+
| identifier                           |
|--------------------------------------|
| 0a3db618-d8e1-48dc-a557-4e8d705d599c |
+--------------------------------------+$scrapy-do-clschedule-job--projectquotesbot--spidertoscrape-css+--------------------------------------+
| identifier                           |
|--------------------------------------|
| b3a61347-92ef-4095-bb68-0702270a52b8 |
+--------------------------------------+See what’s going on:The web interface is available athttp://localhost:7654by default.Building from sourceBoth of the steps below requirenodejsto be installed.Check if things work fine:$pipinstall-rrequirements-dev.txt$toxBuild the wheel:$pythonsetup.pybdist_wheelChangeLogVersion 0.4.0Migration to the Bootstrap 4 UIMake it possible to add a short description to jobsMake it possible to specify user-defined payload in each job that is passed
on as a parameter to the python crawlerUI updates to support the aboveNew log viewers in the web UI
Package: scrapy-domain-delay
Scrapy-Domain-DelayScrapy-Domain-Delayis a package that lets you set different delay for different website, using theScrapyframework.Install$ pip install scrapy-domain-delayUsageStep 1: Extract the domain name from a full url using Python tldextract.>>>importtldextract>>>tldextract.extract('https://www.google.com/').domain'google'In this example, we would extract"google"as domain name from a full url"https://www.google.com/".Step 2: Use the following config values in your scrapy settings:Enable the AutoThrottle extension.AUTOTHROTTLE_ENABLED=TrueEnable the Custom Delay Throttle by adding it toEXTENSIONS.EXTENSIONS={'scrapy.extensions.throttle.AutoThrottle':None,'scrapy_domain_delay.extensions.CustomDelayThrottle':300,}Add{'domain': 'download delay (in seconds)'}to theDOMAIN_DELAYS.something like:# set up custom delays per domainDOMAIN_DELAYS={'google':1.0,'github':0.5,}
Package: scrapy-dot-items
TitleDescriptionFor those who are tired to use scrapy's brackets and quotes.
In one line of code this library will increase the readability of your code, make it more stable to human error.
And will introduce IDEs code completion features to your scrapy items.
You will be able to use scrapy items as normal python objects using dot syntax.The regular bulky way to do it:regular_scrapy_item['some_field'] = 42
print(regular_scrapy_item.get('some_field'))The simple dot-items way:scrapy_dot_item.some_field = 42
print(scrapy_dot_item.some_field)Installationpip install scrapy-dot-itemsUsageApply to a single scrapy item classYou can add functionality with the dot_item decorator to a single classfrom scrapy_dot_items import dot_item

@dot_item
class RealEstateItem(scrapy.Item):
    price = scrapy.Field()

dot_scrapy_item = RealEstateItem()

dot_scrapy_item.price = 1000
print(dot_scrapy_item.price)  # prints 1000Apply to all scrapy itemsYou can apply this functionality globallyfrom scrapy_dot_items import dot_items_globally

dot_items_globally()  # now every scrapy.Item class will have this functionality

class RealEstateItem(scrapy.Item):
    price = scrapy.Field()

dot_scrapy_item = RealEstateItem()

dot_scrapy_item.price = 1000
print(dot_scrapy_item.price)  # prints 1000Backwards compatibilityscrapy-dot-items are backwards compatible. You can install it into your old project and mix regular and dot style.dot_scrapy_item['price'] = 2000  # you can still set and get the items the regular way too
print(dot_scrapy_item.get('price'))  # prints 2000
print(dot_scrapy_item.price)  # prints 2000For contributersThis project uses pipenv instead of pip. Setup:intall pipenv with 'pip install pipenv'create a virtual environment using pipenv with 'pipenv shell' in the root directoryinstall the dependencies with 'pipenv install'Attention:
Please install all packages with 'pipenv install <package_name>'. Do NOT use 'pip install ...'.
The same for unistalling 'pipenv uninstall <package_name>'
Package: scrapy-dotpersistence
Scrapy extension to sync.scrapyfolder to an S3 bucket.InstallationYou can install scrapy-dotpersistence using pip:pip install scrapy-dotpersistenceYou can then enable the extension in yoursettings.py:EXTENSIONS = {
    ...
    'scrapy_dotpersistence.DotScrapyPersistence': 0
}How to use itEnable extension throughsettings.py:DOTSCRAPY_ENABLED = TrueConfigure the exension throughsettings.py:ADDONS_AWS_ACCESS_KEY_ID = "ABC"
ADDONS_AWS_SECRET_ACCESS_KEY = "DEF"
ADDONS_AWS_USERNAME = "username"
ADDONS_S3_BUCKET = "test-bucket-name"You can change a dotpersistence folder path with environ:export DOTSCRAPY_DIR='/tmp/.scrapy'
Package: scrapyd-team
Scrapyd版本变动 v 0.1.1 2022/7/11将缓存区解包egg文件加入到环境变量XDG_CONFIG_HOME,scrapy项目能正常引用scrapy.cfg中配置对于scrapy项目中非py文件,如xlsx文件在程序中引用,请取os.environ["XDG_CONFIG_HOME"]位置作为项目根目录例:# win
with open(os.environ["XDG_CONFIG_HOME"]+'\\readme.txt',encoding = "utf-8") as f:
   read_content = f.read()
Package: scrapyd_UI
ScrapydWeb: Full-featured web UI for Scrapyd cluster management, Scrapy log analysis & visualization==========================[![PyPI - scrapydweb Version](https://img.shields.io/pypi/v/scrapydweb.svg)](https://pypi.org/project/scrapydweb/)[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/scrapydweb.svg)](https://pypi.org/project/scrapydweb/)[![Coverage Status](https://coveralls.io/repos/github/my8100/scrapydweb/badge.svg?branch=master)](https://coveralls.io/github/my8100/scrapydweb?branch=master)[![GitHub license](https://img.shields.io/github/license/my8100/scrapydweb.svg)](https://github.com/my8100/scrapydweb/blob/master/LICENSE)[![Twitter](https://img.shields.io/twitter/url/https/github.com/my8100/scrapydweb.svg?style=social)](https://twitter.com/intent/tweet?text=ScrapydWeb:%20Full-featured%20web%20UI%20for%20Scrapyd%20cluster%20management,%20Scrapy%20log%20analysis%20%26%20visualization%20%23python%20%20%23scrapy%20%23scrapyd%20%23webscraping%20%23scrapydweb%20@my8100_%20&url=https%3A%2F%2Fgithub.com%2Fmy8100%2Fscrapydweb)Features---------------- Scrapyd Cluster Management- Group, filter and select any numbers of nodes- Execute command on multinodes with one click- Scrapy Log Analysis- Stats collection- Progress visualization- Logs categorization- All Scrapyd API Supported- Deploy project, Run Spider, Stop job- List projects/versions/spiders/running_jobs- Delete version/project- Others- Auto eggifying- Basic auth for web UI- Accessing Scrapyd servers protected by basic authDevolopers---------------- [my8100](https://github.com/my8100)- [simplety](https://github.com/simplety) (Front-End)Installation------------To install ScrapydWeb, simply use pip:```pip install scrapydweb```Start Up------------1. Run `scrapydweb -h` to get help,and a config file named **scrapydweb_settings_vN.py** (N for a number) would be copied to current working directory,then you can custom settings in it.2. Run `scrapydweb`3. Visit [http://127.0.0.1:5000](http://127.0.0.1:5000) **(It's recommended to use Google Chrome to get better experience.)**Settings---------------[default_settings.py](https://github.com/my8100/scrapydweb/blob/master/scrapydweb/default_settings.py)Screenshots------------- Overview![overview](https://raw.githubusercontent.com/my8100/scrapydweb/master/screenshots/overview.png)- Dashboard![dashboard](https://raw.githubusercontent.com/my8100/scrapydweb/master/screenshots/dashboard.png)- Log Analysis- Stats collection![log_stats](https://raw.githubusercontent.com/my8100/scrapydweb/master/screenshots/log_stats.png)- Progress visualization![log_charts](https://raw.githubusercontent.com/my8100/scrapydweb/master/screenshots/log_charts.png)- Logs categorization![log_logs](https://raw.githubusercontent.com/my8100/scrapydweb/master/screenshots/log_logs.png)- Deploy a Project![deploy](https://raw.githubusercontent.com/my8100/scrapydweb/master/screenshots/deploy.png)- Run a Spider![run](https://raw.githubusercontent.com/my8100/scrapydweb/master/screenshots/run.png)- Manage Projects![manage](https://raw.githubusercontent.com/my8100/scrapydweb/master/screenshots/manage.png)
Package: scrapyduler
Scrapyd launcher module that schedules scrapy spiders by time.Install$pipinstallscrapydulerConfigTo start using this library you just need to override
thelauncheroption in yourscrapyd.conffile:[scrapyd]
launcher = scrapyduler.launcher.Launcherand then add the schedulers configuration, e.g.:[scheduler.1]
cron        = * * * * *
project     = quotesbot
spider      = toscrape-xpath
settings    = HTTPPROXY_ENABLED=True
args        = key1=value1 key2=value2 start_url=http://quotes.toscrape.com/

[scheduler.2]
interval    = weeks=0 days=0 hours=0 minutes=0 seconds=30
project     = quotesbot
spider      = toscrape-css
settings    = HTTPPROXY_ENABLED=True
args        = key1=value1 key2=value2 start_url=http://quotes.toscrape.com/In the examples above, we set up two schedulers.
The first scheduler uses cron syntax to run spiders.
The second scheduler triggers on specified intervals,
starting onstart_dateif specified,datetime.now()+ interval otherwise.
Seehttps://github.com/agronholm/apschedulerfor more information.