Comments (9)
Original comment by Alex Grönholm (Bitbucket: agronholm, GitHub: agronholm):
Fixed shelve store losing data on an unclean shutdown (fixes #47)
from apscheduler.
Original comment by Alex Grönholm (Bitbucket: agronholm, GitHub: agronholm):
Interesting observation. I should modify the shelve store to do just that.
from apscheduler.
Original comment by Josh Harrison (Bitbucket: hijakk, GitHub: hijakk):
Good call. The following changed method in apscheduler/jobstores/shelve_store.py makes the jobs persist properly in my testing.
#!python
def add_job(self, job):
job.id = self._generate_id()
self.store[job.id] = job.__getstate__()
self.store.close()
self.store = shelve.open(self.path, 'c', self.pickle_protocol)
self.jobs.append(job)
from apscheduler.
Original comment by Alex Grönholm (Bitbucket: agronholm, GitHub: agronholm):
Would you mind doing an experiment for me?
Modify the ShelveJobStore code to close and reopen the shelve where it currently just sync()s. See if that makes a difference.
from apscheduler.
Original comment by Josh Harrison (Bitbucket: hijakk, GitHub: hijakk):
I'm probably doing something wrong, then - like I was saying, when I write
a job to that store and don't either close the jobstore explicitly, shut
down the scheduler, thereby shutting down the jobstore, the job doesn't
persist.
from apscheduler.
Original comment by Alex Grönholm (Bitbucket: agronholm, GitHub: agronholm):
I'm not sure what difference that would make, since syncing is always done after write operations.
from apscheduler.
Original comment by Josh Harrison (Bitbucket: hijakk, GitHub: hijakk):
Not needed
from apscheduler.
Original comment by Josh Harrison (Bitbucket: hijakk, GitHub: hijakk):
Interesting - ok, what I was encountering was that if I added a job and cherrypy restarted, without closing and reopening the store, that job didn't show up anymore.
I see that I can get to the store directly and force a manual sync with sched._jobstores["shelve"].store.sync(), I'll give that a shot. Thanks!
from apscheduler.
Original comment by Alex Grönholm (Bitbucket: agronholm, GitHub: agronholm):
ShelveJobStore already does sync() on all write operations. Not sure what more you want from a commit operation.
ShelveJobStore is a toy, mostly suitable for development.
I wouldn't recommend its use it in production.
from apscheduler.
Related Issues (20)
- `__{a}exit__` typing
- sqlalchemy.exc.ProgrammingError: (asyncmy.errors.ProgrammingError) (1064, "You have an error in your SQL syntax; HOT 3
- TypeError: RetryMixin._retry.<locals>.after_attempt() missing 1 required positional argument: 'retry_state' HOT 1
- Worker stops if there are "too much" simultaneous jobs HOT 2
- Objects inside the job are instantiated multiple times HOT 2
- SQLAlchemyDataStore doesn't respect a custom schema for types
- Create a Cron Trigger with month="*/12" does not work HOT 6
- Allows defining custom pickling method. HOT 5
- So confusing between sync and async. HOT 2
- Logger not logging events of the scheduler instance
- Infinite loop in CalendarIntervalTrigger with UTC timezone
- Support pausing and unpausing schedules HOT 4
- When a job is forcibly cancelled by calling `stop()`, the added schedule to the scheduler will no longer create new job.
- background cron job getting stopped after time run HOT 1
- Implement schedule filters
- [v4.0.0a4] Combining daily and weekly triggers increments by 14 days HOT 7
- [v4.0.0a4] Setting `timezone` in `CalendarIntervalTrigger` loops forever HOT 1
- RuntimeError: cannot schedule new futures after interpreter shutdown when the job is triggered HOT 6
- PsycopgEventBroker.from_async_sqla_engine raises
- `'CronTrigger' object has no attribute 'year'` when try to pause schedule HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from apscheduler.