mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Implement #3447 (Option to limit parallel processes)
This commit is contained in:
parent
b36808c1fc
commit
6fea6a8fa7
@ -83,6 +83,8 @@ def _config():
|
||||
help='Search history for the LRF viewer')
|
||||
c.add_opt('scheduler_search_history', default=[],
|
||||
help='Search history for the recipe scheduler')
|
||||
c.add_opt('worker_limit', default=6,
|
||||
help=_('Maximum number of waiting worker processes'))
|
||||
|
||||
return ConfigProxy(c)
|
||||
|
||||
|
@ -457,6 +457,7 @@ class ConfigDialog(QDialog, Ui_Dialog):
|
||||
self.connect(self.sync_news, SIGNAL('toggled(bool)'),
|
||||
self.delete_news.setEnabled)
|
||||
self.setup_conversion_options()
|
||||
self.opt_worker_limit.setValue(config['worker_limit'])
|
||||
|
||||
def create_symlinks(self):
|
||||
from calibre.utils.osx_symlinks import create_symlinks
|
||||
@ -696,6 +697,12 @@ class ConfigDialog(QDialog, Ui_Dialog):
|
||||
return
|
||||
if not self.add_save.save_settings():
|
||||
return
|
||||
wl = self.opt_worker_limit.value()
|
||||
if wl%2 != 0:
|
||||
wl += 1
|
||||
config['worker_limit'] = wl
|
||||
|
||||
|
||||
config['use_roman_numerals_for_series_number'] = bool(self.roman_numerals.isChecked())
|
||||
config['new_version_notification'] = bool(self.new_version_notification.isChecked())
|
||||
prefs['network_timeout'] = int(self.timeout.value())
|
||||
|
@ -682,50 +682,43 @@
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="page_2">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
||||
<item>
|
||||
<spacer>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
<layout class="QGridLayout" name="gridLayout_3">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>&Maximum number of waiting worker processes (needs restart):</string>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>154</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
<property name="buddy">
|
||||
<cstring>opt_worker_limit</cstring>
|
||||
</property>
|
||||
</spacer>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_12">
|
||||
<item>
|
||||
<widget class="QPushButton" name="compact_button">
|
||||
<property name="text">
|
||||
<string>&Check database integrity</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="button_osx_symlinks">
|
||||
<property name="text">
|
||||
<string>&Install command line tools</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
<item row="0" column="1">
|
||||
<widget class="QSpinBox" name="opt_worker_limit">
|
||||
<property name="minimum">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>10000</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>2</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="compact_button">
|
||||
<property name="text">
|
||||
<string>&Check database integrity</string>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>153</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="button_osx_symlinks">
|
||||
<property name="text">
|
||||
<string>&Install command line tools</string>
|
||||
</property>
|
||||
</spacer>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
@ -15,7 +15,7 @@ from PyQt4.Qt import QAbstractTableModel, QVariant, QModelIndex, Qt, \
|
||||
|
||||
from calibre.utils.ipc.server import Server
|
||||
from calibre.utils.ipc.job import ParallelJob
|
||||
from calibre.gui2 import Dispatcher, error_dialog, NONE
|
||||
from calibre.gui2 import Dispatcher, error_dialog, NONE, config
|
||||
from calibre.gui2.device import DeviceJob
|
||||
from calibre.gui2.dialogs.jobs_ui import Ui_JobsDialog
|
||||
from calibre import __appname__
|
||||
@ -31,7 +31,7 @@ class JobManager(QAbstractTableModel):
|
||||
|
||||
self.jobs = []
|
||||
self.add_job = Dispatcher(self._add_job)
|
||||
self.server = Server()
|
||||
self.server = Server(limit=int(config['worker_limit']/2.0))
|
||||
self.changed_queue = Queue()
|
||||
|
||||
self.timer = QTimer(self)
|
||||
|
@ -530,7 +530,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
|
||||
self._sync_menu.trigger_default)
|
||||
|
||||
def add_spare_server(self, *args):
|
||||
self.spare_servers.append(Server())
|
||||
self.spare_servers.append(Server(limit=int(config['worker_limit']/2.0)))
|
||||
|
||||
@property
|
||||
def spare_server(self):
|
||||
|
@ -5,8 +5,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: calibre 0.6.11\n"
|
||||
"POT-Creation-Date: 2009-09-10 20:58+MDT\n"
|
||||
"PO-Revision-Date: 2009-09-10 20:58+MDT\n"
|
||||
"POT-Creation-Date: 2009-09-10 21:29+MDT\n"
|
||||
"PO-Revision-Date: 2009-09-10 21:29+MDT\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: LANGUAGE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -94,8 +94,8 @@ msgstr ""
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:139
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:141
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:261
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:268
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:263
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:270
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:111
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:118
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21
|
||||
@ -1848,7 +1848,7 @@ msgid "Add a tab at the beginning of each paragraph."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:27
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508
|
||||
msgid "Frequently used directories"
|
||||
msgstr ""
|
||||
|
||||
@ -1936,16 +1936,20 @@ msgstr ""
|
||||
msgid "Default action to perform when send to device button is clicked"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:87
|
||||
msgid "Maximum number of waiting worker processes"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:397
|
||||
msgid "Copied"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:152
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:154
|
||||
msgid "Copy"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:152
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:154
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr ""
|
||||
|
||||
@ -2143,14 +2147,14 @@ msgstr ""
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:44
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:61
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:62
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:491
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:494
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:343
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:348
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362
|
||||
@ -3179,126 +3183,126 @@ msgstr ""
|
||||
msgid "new email address"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:465
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:798
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:466
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:805
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:140
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1004
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:52
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:466
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:467
|
||||
msgid "Failed to install command line tools."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:469
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:470
|
||||
msgid "Command line tools installed"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:470
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:471
|
||||
msgid "Command line tools installed in"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:471
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:472
|
||||
msgid "If you move calibre.app, you have to re-install the command line tools."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:522
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:523
|
||||
msgid "No valid plugin path"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:523
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:524
|
||||
msgid "%s is not a valid plugin path"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:526
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:527
|
||||
msgid "Choose plugin"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539
|
||||
msgid "Plugin cannot be disabled"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:540
|
||||
msgid "The plugin: %s cannot be disabled"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:548
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:549
|
||||
msgid "Plugin not customizable"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:549
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550
|
||||
msgid "Plugin: %s does not need customization"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:573
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:574
|
||||
msgid "Customize %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:583
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:584
|
||||
msgid "Cannot remove builtin plugin"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:584
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:585
|
||||
msgid " cannot be removed. It is a builtin plugin. Try disabling it instead."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:617
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:618
|
||||
msgid "Error log:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:624
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:625
|
||||
msgid "Access log:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:649
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:650
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:573
|
||||
msgid "Failed to start content server"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:673
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:674
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:470
|
||||
msgid "Select location for books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:690
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:691
|
||||
msgid "Invalid size"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:691
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:692
|
||||
msgid "The size %s is invalid. must be of the form widthxheight"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:735
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:740
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:742
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:747
|
||||
msgid "Invalid database location"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:736
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:743
|
||||
msgid "Invalid database location "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:737
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:744
|
||||
msgid "<br>Must be a directory."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:741
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:748
|
||||
msgid "Invalid database location.<br>Cannot write to "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:779
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:786
|
||||
msgid "Checking database integrity"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:799
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:806
|
||||
msgid "Failed to check database integrity"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:811
|
||||
msgid "Some inconsistencies found"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:805
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:812
|
||||
msgid "The following books had formats listed in the database that are not actually available. The entries for the formats have been removed. You should check them manually. This can happen if you manipulate the files in the library folder directly."
|
||||
msgstr ""
|
||||
|
||||
@ -3382,256 +3386,260 @@ msgstr ""
|
||||
msgid "&Saving books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:488
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:491
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:367
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173
|
||||
msgid "Preferences"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:489
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:492
|
||||
msgid "&Location of ebooks (The ebooks are stored in folders sorted by author and metadata is stored in the file metadata.db)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:490
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:493
|
||||
msgid "Browse for the new database location"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:492
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:495
|
||||
msgid "Show notification when &new version is available"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:493
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:496
|
||||
msgid "Default network &timeout:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:494
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:497
|
||||
msgid "Set the default timeout for network fetches (i.e. anytime we go out to the internet to get information)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:495
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:498
|
||||
msgid " seconds"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:496
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:499
|
||||
msgid "Choose &language (requires restart):"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:497
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:500
|
||||
msgid "Normal"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:498
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501
|
||||
msgid "High"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:499
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502
|
||||
msgid "Low"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:500
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503
|
||||
msgid "Job &priority:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504
|
||||
msgid "Preferred &output format:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505
|
||||
msgid "Preferred &input format order:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509
|
||||
msgid "Add a directory to the frequently used directories list"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511
|
||||
msgid "Remove a directory from the frequently used directories list"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513
|
||||
msgid "Use &Roman numerals for series number"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514
|
||||
msgid "Enable system &tray icon (needs restart)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515
|
||||
msgid "Show ¬ifications in system tray"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516
|
||||
msgid "Show cover &browser in a separate window (needs restart)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517
|
||||
msgid "Search as you type"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518
|
||||
msgid "Automatically send downloaded &news to ebook reader"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519
|
||||
msgid "&Delete news from library when it is automatically sent to reader"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520
|
||||
msgid "&Number of covers to show in browse mode (needs restart):"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521
|
||||
msgid "Toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522
|
||||
msgid "Large"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523
|
||||
msgid "Medium"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524
|
||||
msgid "Small"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525
|
||||
msgid "&Button size in toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526
|
||||
msgid "Show &text in toolbar buttons"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527
|
||||
msgid "Select visible &columns in library view"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530
|
||||
msgid "Use internal &viewer for:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531
|
||||
msgid "Add an email address to which to send books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532
|
||||
msgid "&Add email"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533
|
||||
msgid "Make &default"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534
|
||||
msgid "&Remove email"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535
|
||||
msgid "calibre can send your books to you (or your reader) by email"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533
|
||||
msgid "&Check database integrity"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534
|
||||
msgid "&Install command line tools"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535
|
||||
msgid "calibre contains a network server that allows you to access your book collection using a browser from anywhere in the world. Any changes to the settings will only take effect after a server restart."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536
|
||||
msgid "Server &port:"
|
||||
msgid "&Maximum number of waiting worker processes (needs restart):"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537
|
||||
msgid "&Check database integrity"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538
|
||||
msgid "&Install command line tools"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539
|
||||
msgid "calibre contains a network server that allows you to access your book collection using a browser from anywhere in the world. Any changes to the settings will only take effect after a server restart."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540
|
||||
msgid "Server &port:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:178
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117
|
||||
msgid "&Username:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:179
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119
|
||||
msgid "&Password:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543
|
||||
msgid "If you leave the password blank, anyone will be able to access your book collection using the web interface."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:180
|
||||
msgid "&Show password"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545
|
||||
msgid "The maximum size (widthxheight) for displayed covers. Larger covers are resized. "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546
|
||||
msgid "Max. &cover size:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547
|
||||
msgid "&Start Server"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548
|
||||
msgid "St&op Server"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549
|
||||
msgid "&Test Server"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550
|
||||
msgid "Run server &automatically on startup"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551
|
||||
msgid "View &server logs"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46
|
||||
msgid ""
|
||||
"<p>Remember to leave calibre running as the server only runs as long as calibre is running.\n"
|
||||
"<p>Stanza should see your calibre collection automatically. If not, try adding the URL http://myhostname:8080 as a new catalog in the Stanza reader on your iPhone. Here myhostname should be the fully qualified hostname or the IP address of the computer calibre is running on."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554
|
||||
msgid "Here you can customize the behavior of Calibre by controlling what plugins it uses."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555
|
||||
msgid "Enable/&Disable plugin"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556
|
||||
msgid "&Customize plugin"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557
|
||||
msgid "&Remove plugin"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558
|
||||
msgid "Add new plugin"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559
|
||||
msgid "Plugin &file:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561
|
||||
msgid "&Add"
|
||||
msgstr ""
|
||||
|
||||
|
@ -6,7 +6,7 @@ __license__ = 'GPL v3'
|
||||
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||
__docformat__ = 'restructuredtext en'
|
||||
|
||||
import os, cPickle, time, tempfile
|
||||
import sys, os, cPickle, time, tempfile
|
||||
from math import ceil
|
||||
from threading import Thread, RLock
|
||||
from Queue import Queue, Empty
|
||||
@ -83,14 +83,16 @@ class CriticalError(Exception):
|
||||
|
||||
class Server(Thread):
|
||||
|
||||
def __init__(self, notify_on_job_done=lambda x: x, pool_size=None):
|
||||
def __init__(self, notify_on_job_done=lambda x: x, pool_size=None,
|
||||
limit=sys.maxint):
|
||||
Thread.__init__(self)
|
||||
self.daemon = True
|
||||
global _counter
|
||||
self.id = _counter+1
|
||||
_counter += 1
|
||||
|
||||
self.pool_size = cpu_count() if pool_size is None else pool_size
|
||||
limit = min(limit, cpu_count())
|
||||
self.pool_size = limit if pool_size is None else pool_size
|
||||
self.notify_on_job_done = notify_on_job_done
|
||||
self.auth_key = os.urandom(32)
|
||||
self.address = arbitrary_address('AF_PIPE' if iswindows else 'AF_UNIX')
|
||||
|
Loading…
x
Reference in New Issue
Block a user